2021-02-07 13:54:07 +03:00
{
"swagger" : "2.0" ,
"info" : {
"description" : "REST API to interact with [Wakapi](https://wakapi.dev)\n\n## Authentication\nSet header `Authorization` to your API Key encoded as Base64 and prefixed with `Basic`\n**Example:** `Basic ODY2NDhkNzQtMTljNS00NTJiLWJhMDEtZmIzZWM3MGQ0YzJmCg==`" ,
"title" : "Wakapi API" ,
"contact" : {
"name" : "Ferdinand Mütsch" ,
"url" : "https://github.com/muety" ,
"email" : "ferdinand@muetsch.io"
} ,
"license" : {
"name" : "GPL-3.0" ,
"url" : "https://github.com/muety/wakapi/blob/master/LICENSE"
} ,
"version" : "1.0"
} ,
"paths" : {
2022-01-02 03:22:58 +03:00
"/compat/shields/v1/{user}/{interval}/{filter}" : {
2021-02-07 13:54:07 +03:00
"get" : {
"description" : "Retrieve total time for a given entity (e.g. a project) within a given range (e.g. one week) in a format compatible with [Shields.io](https://shields.io/endpoint). Requires public data access to be allowed." ,
"produces" : [
"application/json"
] ,
"tags" : [
"badges"
] ,
"summary" : "Get badge data" ,
"operationId" : "get-badge" ,
"parameters" : [
{
"type" : "string" ,
"description" : "User ID to fetch data for" ,
"name" : "user" ,
"in" : "path" ,
"required" : true
} ,
{
"enum" : [
"today" ,
"yesterday" ,
"week" ,
"month" ,
"year" ,
"7_days" ,
"last_7_days" ,
"30_days" ,
"last_30_days" ,
2022-08-19 18:14:00 +03:00
"6_months" ,
"last_6_months" ,
2021-02-07 13:54:07 +03:00
"12_months" ,
"last_12_months" ,
2022-08-19 18:14:00 +03:00
"last_year" ,
"any" ,
"all_time"
2021-02-07 13:54:07 +03:00
] ,
"type" : "string" ,
"description" : "Interval to aggregate data for" ,
"name" : "interval" ,
"in" : "path" ,
"required" : true
} ,
{
"type" : "string" ,
"description" : "Filter to apply (e.g. 'project:wakapi' or 'language:Go')" ,
"name" : "filter" ,
"in" : "path" ,
"required" : true
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/v1.BadgeData"
}
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/compat/wakatime/v1/users/{user}" : {
2021-04-30 11:12:28 +03:00
"get" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"description" : "Mimics https://wakatime.com/developers#users" ,
"produces" : [
"application/json"
] ,
"tags" : [
"wakatime"
] ,
"summary" : "Retrieve the given user" ,
"operationId" : "get-wakatime-user" ,
"parameters" : [
{
"type" : "string" ,
"description" : "User ID to fetch (or 'current')" ,
"name" : "user" ,
"in" : "path" ,
"required" : true
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/v1.UserViewModel"
}
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/compat/wakatime/v1/users/{user}/all_time_since_today" : {
2021-02-07 13:54:07 +03:00
"get" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"description" : "Mimics https://wakatime.com/developers#all_time_since_today" ,
"produces" : [
"application/json"
] ,
"tags" : [
"wakatime"
] ,
"summary" : "Retrieve summary for all time" ,
"operationId" : "get-all-time" ,
"parameters" : [
{
"type" : "string" ,
"description" : "User ID to fetch data for (or 'current')" ,
"name" : "user" ,
"in" : "path" ,
"required" : true
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/v1.AllTimeViewModel"
}
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/compat/wakatime/v1/users/{user}/heartbeats" : {
2022-01-28 14:28:47 +03:00
"get" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"tags" : [
"heartbeat"
] ,
"summary" : "Get heartbeats of user for specified date" ,
"operationId" : "get-heartbeats" ,
"parameters" : [
{
"type" : "string" ,
"description" : "Date" ,
"name" : "date" ,
"in" : "query" ,
"required" : true
} ,
{
"type" : "string" ,
"description" : "Username (or current)" ,
"name" : "user" ,
"in" : "path" ,
"required" : true
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
2022-02-13 12:59:14 +03:00
"$ref" : "#/definitions/v1.HeartbeatsResult"
2022-01-28 14:28:47 +03:00
}
} ,
"400" : {
"description" : "bad date" ,
"schema" : {
"type" : "string"
}
}
}
} ,
2021-06-21 22:53:47 +03:00
"post" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"consumes" : [
"application/json"
] ,
"tags" : [
"heartbeat"
] ,
"summary" : "Push a new heartbeat" ,
"operationId" : "post-heartbeat-3" ,
"parameters" : [
{
"description" : "A single heartbeat" ,
"name" : "heartbeat" ,
"in" : "body" ,
"required" : true ,
"schema" : {
"$ref" : "#/definitions/models.Heartbeat"
}
2022-01-28 14:28:47 +03:00
} ,
{
"type" : "string" ,
"description" : "Username (or current)" ,
"name" : "user" ,
"in" : "path" ,
"required" : true
2021-06-21 22:53:47 +03:00
}
] ,
"responses" : {
"201" : {
"description" : ""
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/compat/wakatime/v1/users/{user}/heartbeats.bulk" : {
2021-06-21 22:53:47 +03:00
"post" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"consumes" : [
"application/json"
] ,
"tags" : [
"heartbeat"
] ,
"summary" : "Push new heartbeats" ,
2021-06-22 01:27:46 +03:00
"operationId" : "post-heartbeat-7" ,
2021-06-21 22:53:47 +03:00
"parameters" : [
{
"description" : "Multiple heartbeats" ,
"name" : "heartbeat" ,
"in" : "body" ,
"required" : true ,
"schema" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/models.Heartbeat"
}
}
2022-01-28 14:28:47 +03:00
} ,
{
"type" : "string" ,
"description" : "Username (or current)" ,
"name" : "user" ,
"in" : "path" ,
"required" : true
2021-06-21 22:53:47 +03:00
}
] ,
"responses" : {
"201" : {
"description" : ""
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/compat/wakatime/v1/users/{user}/projects" : {
2021-05-01 14:52:03 +03:00
"get" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"description" : "Mimics https://wakatime.com/developers#projects" ,
"produces" : [
"application/json"
] ,
"tags" : [
"wakatime"
] ,
"summary" : "Retrieve and fitler the user's projects" ,
"operationId" : "get-wakatime-projects" ,
"parameters" : [
{
"type" : "string" ,
"description" : "User ID to fetch data for (or 'current')" ,
"name" : "user" ,
"in" : "path" ,
"required" : true
} ,
{
"type" : "string" ,
"description" : "Query to filter projects by" ,
"name" : "q" ,
"in" : "query" ,
"required" : true
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/v1.ProjectsViewModel"
}
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/compat/wakatime/v1/users/{user}/stats/{range}" : {
2021-04-30 11:12:28 +03:00
"get" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"description" : "Mimics https://wakatime.com/developers#stats" ,
"produces" : [
"application/json"
] ,
"tags" : [
"wakatime"
] ,
"summary" : "Retrieve statistics for a given user" ,
"operationId" : "get-wakatimes-tats" ,
"parameters" : [
{
"type" : "string" ,
"description" : "User ID to fetch data for (or 'current')" ,
"name" : "user" ,
"in" : "path" ,
"required" : true
} ,
{
"enum" : [
"today" ,
"yesterday" ,
"week" ,
"month" ,
"year" ,
"7_days" ,
"last_7_days" ,
"30_days" ,
"last_30_days" ,
2022-08-19 18:14:00 +03:00
"6_months" ,
"last_6_months" ,
2021-04-30 11:12:28 +03:00
"12_months" ,
"last_12_months" ,
2022-08-19 18:14:00 +03:00
"last_year" ,
"any" ,
"all_time"
2021-04-30 11:12:28 +03:00
] ,
"type" : "string" ,
"description" : "Range interval identifier" ,
"name" : "range" ,
2021-09-04 21:02:01 +03:00
"in" : "path"
2021-12-26 21:29:17 +03:00
} ,
{
"type" : "string" ,
"description" : "Project to filter by" ,
"name" : "project" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "Language to filter by" ,
"name" : "language" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "Editor to filter by" ,
"name" : "editor" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "OS to filter by" ,
"name" : "operating_system" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "Machine to filter by" ,
"name" : "machine" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "Project label to filter by" ,
"name" : "label" ,
"in" : "query"
2021-04-30 11:12:28 +03:00
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/v1.StatsViewModel"
}
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/compat/wakatime/v1/users/{user}/summaries" : {
2021-02-07 13:54:07 +03:00
"get" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"description" : "Mimics https://wakatime.com/developers#summaries." ,
"produces" : [
"application/json"
] ,
"tags" : [
"wakatime"
] ,
"summary" : "Retrieve WakaTime-compatible summaries" ,
"operationId" : "get-wakatime-summaries" ,
"parameters" : [
{
"type" : "string" ,
"description" : "User ID to fetch data for (or 'current')" ,
"name" : "user" ,
"in" : "path" ,
"required" : true
} ,
{
"enum" : [
"today" ,
"yesterday" ,
"week" ,
"month" ,
"year" ,
"7_days" ,
"last_7_days" ,
"30_days" ,
"last_30_days" ,
2022-08-19 18:14:00 +03:00
"6_months" ,
"last_6_months" ,
2021-02-07 13:54:07 +03:00
"12_months" ,
"last_12_months" ,
2022-08-19 18:14:00 +03:00
"last_year" ,
"any" ,
"all_time"
2021-02-07 13:54:07 +03:00
] ,
"type" : "string" ,
"description" : "Range interval identifier" ,
"name" : "range" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "Start date (e.g. '2021-02-07')" ,
"name" : "start" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "End date (e.g. '2021-02-08')" ,
"name" : "end" ,
"in" : "query"
2021-12-26 21:29:17 +03:00
} ,
{
"type" : "string" ,
"description" : "Project to filter by" ,
"name" : "project" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "Language to filter by" ,
"name" : "language" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "Editor to filter by" ,
"name" : "editor" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "OS to filter by" ,
"name" : "operating_system" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "Machine to filter by" ,
"name" : "machine" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "Project label to filter by" ,
"name" : "label" ,
"in" : "query"
2021-02-07 13:54:07 +03:00
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/v1.SummariesViewModel"
}
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/health" : {
2021-02-07 13:54:07 +03:00
"get" : {
"produces" : [
"text/plain"
] ,
"tags" : [
"misc"
] ,
"summary" : "Check the application's health status" ,
"operationId" : "get-health" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"type" : "string"
}
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/heartbeat" : {
2021-02-07 13:54:07 +03:00
"post" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"consumes" : [
"application/json"
] ,
"tags" : [
"heartbeat"
] ,
"summary" : "Push a new heartbeat" ,
"operationId" : "post-heartbeat" ,
"parameters" : [
{
2021-06-21 22:53:47 +03:00
"description" : "A single heartbeat" ,
2021-02-07 13:54:07 +03:00
"name" : "heartbeat" ,
"in" : "body" ,
"required" : true ,
"schema" : {
"$ref" : "#/definitions/models.Heartbeat"
}
}
] ,
"responses" : {
"201" : {
"description" : ""
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/heartbeats" : {
2021-06-21 22:53:47 +03:00
"post" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"consumes" : [
"application/json"
] ,
"tags" : [
"heartbeat"
] ,
"summary" : "Push new heartbeats" ,
2021-06-22 01:27:46 +03:00
"operationId" : "post-heartbeat-5" ,
2021-06-21 22:53:47 +03:00
"parameters" : [
{
"description" : "Multiple heartbeats" ,
"name" : "heartbeat" ,
"in" : "body" ,
"required" : true ,
"schema" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/models.Heartbeat"
}
}
}
] ,
"responses" : {
"201" : {
"description" : ""
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/plugins/errors" : {
2021-08-07 11:16:50 +03:00
"post" : {
"consumes" : [
"application/json"
] ,
"tags" : [
"diagnostics"
] ,
"summary" : "Push a new diagnostics object" ,
"operationId" : "post-diagnostics" ,
"parameters" : [
{
"description" : "A single diagnostics object sent by WakaTime CLI" ,
"name" : "diagnostics" ,
"in" : "body" ,
"required" : true ,
"schema" : {
"$ref" : "#/definitions/models.Diagnostics"
}
}
] ,
"responses" : {
"201" : {
"description" : ""
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/relay" : {
"get" : {
"tags" : [
"relay"
] ,
"summary" : "Proxy an GET API request to another Wakapi instance" ,
"operationId" : "relay-get" ,
"parameters" : [
{
"type" : "string" ,
"description" : "Original URL to perform the request to" ,
"name" : "X-Target-URL" ,
"in" : "header" ,
"required" : true
}
] ,
"responses" : {
"403" : {
"description" : "Returned if request path is not whitelisted" ,
"schema" : {
"type" : "string"
}
} ,
"502" : {
"description" : "Returned if upstream host is down" ,
"schema" : {
"type" : "string"
}
}
}
} ,
"put" : {
"tags" : [
"relay"
] ,
"summary" : "Proxy an PUT API request to another Wakapi instance" ,
"operationId" : "relay-put" ,
"parameters" : [
{
"type" : "string" ,
"description" : "Original URL to perform the request to" ,
"name" : "X-Target-URL" ,
"in" : "header" ,
"required" : true
}
] ,
"responses" : {
"403" : {
"description" : "Returned if request path is not whitelisted" ,
"schema" : {
"type" : "string"
}
} ,
"502" : {
"description" : "Returned if upstream host is down" ,
"schema" : {
"type" : "string"
}
}
}
} ,
"post" : {
"tags" : [
"relay"
] ,
"summary" : "Proxy an POST API request to another Wakapi instance" ,
"operationId" : "relay-post" ,
"parameters" : [
{
"type" : "string" ,
"description" : "Original URL to perform the request to" ,
"name" : "X-Target-URL" ,
"in" : "header" ,
"required" : true
}
] ,
"responses" : {
"403" : {
"description" : "Returned if request path is not whitelisted" ,
"schema" : {
"type" : "string"
}
} ,
"502" : {
"description" : "Returned if upstream host is down" ,
"schema" : {
"type" : "string"
}
}
}
} ,
"delete" : {
"tags" : [
"relay"
] ,
"summary" : "Proxy an DELETE API request to another Wakapi instance" ,
"operationId" : "relay-delete" ,
"parameters" : [
{
"type" : "string" ,
"description" : "Original URL to perform the request to" ,
"name" : "X-Target-URL" ,
"in" : "header" ,
"required" : true
}
] ,
"responses" : {
"403" : {
"description" : "Returned if request path is not whitelisted" ,
"schema" : {
"type" : "string"
}
} ,
"502" : {
"description" : "Returned if upstream host is down" ,
"schema" : {
"type" : "string"
}
}
}
} ,
"patch" : {
"tags" : [
"relay"
] ,
"summary" : "Proxy an PATCH API request to another Wakapi instance" ,
"operationId" : "relay-patch" ,
"parameters" : [
{
"type" : "string" ,
"description" : "Original URL to perform the request to" ,
"name" : "X-Target-URL" ,
"in" : "header" ,
"required" : true
}
] ,
"responses" : {
"403" : {
"description" : "Returned if request path is not whitelisted" ,
"schema" : {
"type" : "string"
}
} ,
"502" : {
"description" : "Returned if upstream host is down" ,
"schema" : {
"type" : "string"
}
}
}
}
} ,
"/summary" : {
2021-02-07 13:54:07 +03:00
"get" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"produces" : [
"application/json"
] ,
"tags" : [
"summary"
] ,
"summary" : "Retrieve a summary" ,
"operationId" : "get-summary" ,
"parameters" : [
{
"enum" : [
"today" ,
"yesterday" ,
"week" ,
"month" ,
"year" ,
"7_days" ,
"last_7_days" ,
"30_days" ,
"last_30_days" ,
2022-08-19 18:14:00 +03:00
"6_months" ,
"last_6_months" ,
2021-02-07 13:54:07 +03:00
"12_months" ,
"last_12_months" ,
2022-08-19 18:14:00 +03:00
"last_year" ,
"any" ,
"all_time"
2021-02-07 13:54:07 +03:00
] ,
"type" : "string" ,
"description" : "Interval identifier" ,
"name" : "interval" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "Start date (e.g. '2021-02-07')" ,
"name" : "from" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "End date (e.g. '2021-02-08')" ,
"name" : "to" ,
"in" : "query"
} ,
{
"type" : "boolean" ,
"description" : "Whether to recompute the summary from raw heartbeat or use cache" ,
"name" : "recompute" ,
"in" : "query"
2021-12-26 21:29:17 +03:00
} ,
{
"type" : "string" ,
"description" : "Project to filter by" ,
"name" : "project" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "Language to filter by" ,
"name" : "language" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "Editor to filter by" ,
"name" : "editor" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "OS to filter by" ,
"name" : "operating_system" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "Machine to filter by" ,
"name" : "machine" ,
"in" : "query"
} ,
{
"type" : "string" ,
"description" : "Project label to filter by" ,
"name" : "label" ,
"in" : "query"
2021-02-07 13:54:07 +03:00
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/models.Summary"
}
}
}
}
2021-06-21 22:53:47 +03:00
} ,
2022-01-02 03:22:58 +03:00
"/users/{user}/heartbeats" : {
2021-06-22 01:27:46 +03:00
"post" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"consumes" : [
"application/json"
] ,
"tags" : [
"heartbeat"
] ,
"summary" : "Push a new heartbeat" ,
"operationId" : "post-heartbeat-4" ,
"parameters" : [
{
"description" : "A single heartbeat" ,
"name" : "heartbeat" ,
"in" : "body" ,
"required" : true ,
"schema" : {
"$ref" : "#/definitions/models.Heartbeat"
}
2022-01-28 14:28:47 +03:00
} ,
{
"type" : "string" ,
"description" : "Username (or current)" ,
"name" : "user" ,
"in" : "path" ,
"required" : true
2021-06-22 01:27:46 +03:00
}
] ,
"responses" : {
"201" : {
"description" : ""
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/users/{user}/heartbeats.bulk" : {
2021-06-22 01:27:46 +03:00
"post" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"consumes" : [
"application/json"
] ,
"tags" : [
"heartbeat"
] ,
"summary" : "Push new heartbeats" ,
"operationId" : "post-heartbeat-8" ,
"parameters" : [
{
"description" : "Multiple heartbeats" ,
"name" : "heartbeat" ,
"in" : "body" ,
"required" : true ,
"schema" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/models.Heartbeat"
}
}
2022-01-28 14:28:47 +03:00
} ,
{
"type" : "string" ,
"description" : "Username (or current)" ,
"name" : "user" ,
"in" : "path" ,
"required" : true
2021-06-22 01:27:46 +03:00
}
] ,
"responses" : {
"201" : {
"description" : ""
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/users/{user}/statusbar/today" : {
2021-10-13 18:47:18 +03:00
"get" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"description" : "Mimics https://wakatime.com/api/v1/users/current/statusbar/today. Have no official documentation" ,
"produces" : [
"application/json"
] ,
"tags" : [
"wakatime"
] ,
"summary" : "Retrieve summary for statusbar" ,
"operationId" : "statusbar" ,
"parameters" : [
{
"type" : "string" ,
"description" : "User ID to fetch data for (or 'current')" ,
"name" : "user" ,
"in" : "path" ,
"required" : true
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/v1.StatusBarViewModel"
}
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/v1/users/{user}/heartbeats" : {
2021-06-21 22:53:47 +03:00
"post" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"consumes" : [
"application/json"
] ,
"tags" : [
"heartbeat"
] ,
"summary" : "Push a new heartbeat" ,
"operationId" : "post-heartbeat-2" ,
"parameters" : [
{
"description" : "A single heartbeat" ,
"name" : "heartbeat" ,
"in" : "body" ,
"required" : true ,
"schema" : {
"$ref" : "#/definitions/models.Heartbeat"
}
2022-01-28 14:28:47 +03:00
} ,
{
"type" : "string" ,
"description" : "Username (or current)" ,
"name" : "user" ,
"in" : "path" ,
"required" : true
2021-06-21 22:53:47 +03:00
}
] ,
"responses" : {
"201" : {
"description" : ""
}
}
}
} ,
2022-01-02 03:22:58 +03:00
"/v1/users/{user}/heartbeats.bulk" : {
2021-06-21 22:53:47 +03:00
"post" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
"consumes" : [
"application/json"
] ,
"tags" : [
"heartbeat"
] ,
"summary" : "Push new heartbeats" ,
2021-06-22 01:27:46 +03:00
"operationId" : "post-heartbeat-6" ,
2021-06-21 22:53:47 +03:00
"parameters" : [
{
"description" : "Multiple heartbeats" ,
"name" : "heartbeat" ,
"in" : "body" ,
"required" : true ,
"schema" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/models.Heartbeat"
}
}
2022-01-28 14:28:47 +03:00
} ,
{
"type" : "string" ,
"description" : "Username (or current)" ,
"name" : "user" ,
"in" : "path" ,
"required" : true
2021-06-21 22:53:47 +03:00
}
] ,
"responses" : {
"201" : {
"description" : ""
}
}
}
2021-02-07 13:54:07 +03:00
}
} ,
"definitions" : {
2021-08-07 11:16:50 +03:00
"models.Diagnostics" : {
"type" : "object" ,
"properties" : {
"architecture" : {
"type" : "string"
} ,
"cli_version" : {
"type" : "string"
} ,
"id" : {
"type" : "integer"
} ,
"logs" : {
"type" : "string"
} ,
"platform" : {
"type" : "string"
} ,
"plugin" : {
"type" : "string"
} ,
"stacktrace" : {
"type" : "string"
}
}
} ,
2021-02-07 13:54:07 +03:00
"models.Heartbeat" : {
"type" : "object" ,
"properties" : {
"branch" : {
"type" : "string"
} ,
"category" : {
"type" : "string"
} ,
2021-04-30 11:12:28 +03:00
"created_at" : {
"description" : "https://gorm.io/docs/conventions.html#CreatedAt" ,
"type" : "number"
} ,
2021-02-07 13:54:07 +03:00
"editor" : {
"description" : "ignored because editor might be parsed differently by wakatime" ,
"type" : "string"
} ,
"entity" : {
"type" : "string"
} ,
"id" : {
"type" : "integer"
} ,
"is_write" : {
"type" : "boolean"
} ,
"language" : {
"type" : "string"
} ,
"machine" : {
"description" : "ignored because wakatime api doesn't return machines currently" ,
"type" : "string"
} ,
"operating_system" : {
"description" : "ignored because os might be parsed differently by wakatime" ,
"type" : "string"
} ,
"project" : {
"type" : "string"
} ,
"time" : {
"type" : "number"
} ,
"type" : {
"type" : "string"
2021-10-13 18:47:18 +03:00
} ,
"user_agent" : {
"type" : "string"
2021-02-07 13:54:07 +03:00
}
}
} ,
"models.Summary" : {
"type" : "object" ,
"properties" : {
2022-01-28 14:28:47 +03:00
"branches" : {
"description" : "branches are not persisted, but calculated at runtime in case a project filter is applied" ,
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/models.SummaryItem"
}
} ,
2021-02-07 13:54:07 +03:00
"editors" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/models.SummaryItem"
}
} ,
"from" : {
"type" : "string" ,
"format" : "date" ,
"example" : "2006-01-02 15:04:05.000"
} ,
2021-06-21 22:53:47 +03:00
"labels" : {
2021-08-07 11:16:50 +03:00
"description" : "labels are not persisted, but calculated at runtime, i.e. when summary is retrieved" ,
2021-06-21 22:53:47 +03:00
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/models.SummaryItem"
}
} ,
2021-02-07 13:54:07 +03:00
"languages" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/models.SummaryItem"
}
} ,
"machines" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/models.SummaryItem"
}
} ,
"operating_systems" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/models.SummaryItem"
}
} ,
"projects" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/models.SummaryItem"
}
} ,
"to" : {
"type" : "string" ,
"format" : "date" ,
"example" : "2006-01-02 15:04:05.000"
} ,
"user_id" : {
"type" : "string"
}
}
} ,
"models.SummaryItem" : {
"type" : "object" ,
"properties" : {
"key" : {
"type" : "string"
} ,
"total" : {
"type" : "integer"
}
}
} ,
"v1.AllTimeData" : {
"type" : "object" ,
"properties" : {
"is_up_to_date" : {
"description" : "true if the stats are up to date; when false, a 202 response code is returned and stats will be refreshed soon\u003e" ,
"type" : "boolean"
} ,
2021-04-30 11:12:28 +03:00
"range" : {
"$ref" : "#/definitions/v1.AllTimeRange"
} ,
2021-02-07 13:54:07 +03:00
"text" : {
"description" : "total time logged since account created as human readable string\u003e" ,
"type" : "string"
} ,
"total_seconds" : {
"description" : "total number of seconds logged since account created" ,
"type" : "number"
}
}
} ,
2021-04-30 11:12:28 +03:00
"v1.AllTimeRange" : {
"type" : "object" ,
"properties" : {
"end" : {
"type" : "string"
} ,
"end_date" : {
"type" : "string"
} ,
"start" : {
"type" : "string"
} ,
"start_date" : {
"type" : "string"
} ,
"timezone" : {
"type" : "string"
}
}
} ,
2021-02-07 13:54:07 +03:00
"v1.AllTimeViewModel" : {
"type" : "object" ,
"properties" : {
"data" : {
"$ref" : "#/definitions/v1.AllTimeData"
}
}
} ,
"v1.BadgeData" : {
"type" : "object" ,
"properties" : {
"color" : {
"type" : "string"
} ,
"label" : {
"type" : "string"
} ,
"message" : {
"type" : "string"
} ,
"schemaVersion" : {
"type" : "integer"
}
}
} ,
2022-01-28 14:28:47 +03:00
"v1.HeartbeatEntry" : {
"type" : "object" ,
"properties" : {
"branch" : {
"type" : "string"
} ,
"category" : {
"type" : "string"
} ,
"created_at" : {
"type" : "string"
} ,
"entity" : {
"type" : "string"
} ,
"id" : {
"type" : "string"
} ,
"is_write" : {
"type" : "boolean"
} ,
"language" : {
"type" : "string"
} ,
"machine_name_id" : {
"type" : "string"
} ,
"project" : {
"type" : "string"
} ,
"time" : {
"type" : "number"
} ,
"type" : {
"type" : "string"
} ,
"user_agent_id" : {
"type" : "string"
} ,
"user_id" : {
"type" : "string"
}
}
} ,
2022-02-13 12:59:14 +03:00
"v1.HeartbeatsResult" : {
"type" : "object" ,
"properties" : {
"data" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.HeartbeatEntry"
}
} ,
"end" : {
"type" : "string"
} ,
"start" : {
"type" : "string"
} ,
"timezone" : {
"type" : "string"
}
}
} ,
2021-05-01 14:52:03 +03:00
"v1.Project" : {
"type" : "object" ,
"properties" : {
"id" : {
"type" : "string"
} ,
"name" : {
"type" : "string"
} ,
"repository" : {
"type" : "string"
}
}
} ,
"v1.ProjectsViewModel" : {
"type" : "object" ,
"properties" : {
"data" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.Project"
}
}
}
} ,
2021-02-07 13:54:07 +03:00
"v1.StatsData" : {
"type" : "object" ,
"properties" : {
2022-01-28 14:28:47 +03:00
"branches" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.SummariesEntry"
}
} ,
2021-02-07 13:54:07 +03:00
"daily_average" : {
"type" : "number"
} ,
"days_including_holidays" : {
"type" : "integer"
} ,
"editors" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.SummariesEntry"
}
} ,
"end" : {
"type" : "string"
} ,
"languages" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.SummariesEntry"
}
} ,
"machines" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.SummariesEntry"
}
} ,
"operating_systems" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.SummariesEntry"
}
} ,
"projects" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.SummariesEntry"
}
} ,
"start" : {
"type" : "string"
} ,
"total_seconds" : {
"type" : "number"
} ,
"user_id" : {
"type" : "string"
} ,
"username" : {
"type" : "string"
}
}
} ,
"v1.StatsViewModel" : {
"type" : "object" ,
"properties" : {
"data" : {
"$ref" : "#/definitions/v1.StatsData"
}
}
} ,
2021-10-13 18:47:18 +03:00
"v1.StatusBarViewModel" : {
"type" : "object" ,
"properties" : {
"cached_at" : {
"type" : "string"
} ,
"data" : {
"$ref" : "#/definitions/v1.SummariesData"
}
}
} ,
2021-02-07 13:54:07 +03:00
"v1.SummariesData" : {
"type" : "object" ,
"properties" : {
2022-01-28 14:28:47 +03:00
"branches" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.SummariesEntry"
}
} ,
2021-02-07 13:54:07 +03:00
"categories" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.SummariesEntry"
}
} ,
"dependencies" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.SummariesEntry"
}
} ,
"editors" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.SummariesEntry"
}
} ,
"grand_total" : {
"$ref" : "#/definitions/v1.SummariesGrandTotal"
} ,
"languages" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.SummariesEntry"
}
} ,
"machines" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.SummariesEntry"
}
} ,
"operating_systems" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.SummariesEntry"
}
} ,
"projects" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.SummariesEntry"
}
} ,
"range" : {
"$ref" : "#/definitions/v1.SummariesRange"
}
}
} ,
"v1.SummariesEntry" : {
"type" : "object" ,
"properties" : {
"digital" : {
"type" : "string"
} ,
"hours" : {
"type" : "integer"
} ,
"minutes" : {
"type" : "integer"
} ,
"name" : {
"type" : "string"
} ,
"percent" : {
"type" : "number"
} ,
"seconds" : {
"type" : "integer"
} ,
"text" : {
"type" : "string"
} ,
"total_seconds" : {
"type" : "number"
}
}
} ,
"v1.SummariesGrandTotal" : {
"type" : "object" ,
"properties" : {
"digital" : {
"type" : "string"
} ,
"hours" : {
"type" : "integer"
} ,
"minutes" : {
"type" : "integer"
} ,
"text" : {
"type" : "string"
} ,
"total_seconds" : {
"type" : "number"
}
}
} ,
"v1.SummariesRange" : {
"type" : "object" ,
"properties" : {
"date" : {
"type" : "string"
} ,
"end" : {
"type" : "string"
} ,
"start" : {
"type" : "string"
} ,
"text" : {
"type" : "string"
} ,
"timezone" : {
"type" : "string"
}
}
} ,
"v1.SummariesViewModel" : {
"type" : "object" ,
"properties" : {
"data" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/v1.SummariesData"
}
} ,
"end" : {
"type" : "string"
} ,
"start" : {
"type" : "string"
}
}
2021-04-30 11:12:28 +03:00
} ,
"v1.User" : {
"type" : "object" ,
"properties" : {
"created_at" : {
"type" : "string"
} ,
"display_name" : {
"type" : "string"
} ,
"email" : {
"type" : "string"
} ,
"full_name" : {
"type" : "string"
} ,
"id" : {
"type" : "string"
} ,
"is_email_confirmed" : {
"type" : "boolean"
} ,
"is_email_public" : {
"type" : "boolean"
} ,
"last_heartbeat_at" : {
"type" : "string"
} ,
"last_plugin_name" : {
"type" : "string"
} ,
"last_project" : {
"type" : "string"
} ,
"modified_at" : {
"type" : "string"
} ,
"timezone" : {
"type" : "string"
} ,
"username" : {
"type" : "string"
} ,
"website" : {
"type" : "string"
}
}
} ,
"v1.UserViewModel" : {
"type" : "object" ,
"properties" : {
"data" : {
"$ref" : "#/definitions/v1.User"
}
}
2021-02-07 13:54:07 +03:00
}
} ,
"securityDefinitions" : {
"ApiKeyAuth" : {
"type" : "apiKey" ,
"name" : "Authorization" ,
"in" : "header"
}
}
}