Auth Types
Full Types
auth/auth-body
-
Successful authentication response body.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/auth/auto-token.json", "title": "Auth Response Body", "type": "object", "properties": { "apiKey": { "$ref": "../meta/api-key.json" } }, "required": [ "apiKey" ], "additionalProperties": false }
auth/device-payload
-
Device auto-auth payload.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/auth/device-payload.json", "title": "Device Auth Payload", "type": "object", "properties": { "userId": { "title": "User ID", "$ref": "../pg/serial8.json" }, "deviceId": { "$ref": "../device/device-id.json" }, "token": { "$ref": "auto-token.json" } }, "required": [ "userId", "deviceId", "token" ], "additionalProperties": false, "example": { "userId": 325891, "deviceId": "ed4e9c0f503446dc9505d688768cf106", "token": "87a8999b6a7b43f6b02ebb6db45013b056b022a6b06c4638a7bfcf894d3a9d73" } }
auth/webapp-payload
-
Web app auth payload.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/auth/webapp-payload.json", "title": "Login Authentication Payload", "description": "Authentication body for login requests.", "type": "object", "properties": { "email": { "title": "User Email Address", "type": "string", "format": "email" }, "password": { "$ref": "password.json" } }, "required": [ "email", "password" ], "additionalProperties": false, "example": { "email": "foobar@softask.app", "password": "N4hMGU*Byr77@m2!" } }
auth/pw-reset
-
Password reset payload.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/auth/pw-reset.json", "title": "Password Reset Payload", "description": "JSON payload sent to the Softask service to update a user's password.", "type": "object", "properties": { "userId": { "$ref": "../pg/serial8.json" }, "token": { "title": "Password Reset Token", "description": "Token issued by the service (and sent to the user in an email) that authorizes the password reset.", "type": "string", "minLength": 64, "pattern": "^[a-fA-F0-9]{64}$", "examples": [ "bfdca5b9d7ea47fcb4f7017a1603c3ae7d0bd8caf9d0442eac9b706e715c1b1a" ] }, "password": { "title": "New Password", "$ref": "password.json" } }, "required": [ "userId", "token", "password" ], "additionalProperties": false }
auth/pw-reset-request
-
Password reset request payload.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/auth/pw-reset-request.json", "title": "Password Reset Request Payload", "description": "JSON payload sent to the Softask service to request a password reset for a user.", "type": "object", "properties": { "email": { "type": "string", "format": "email" } }, "required": [ "email" ], "additionalProperties": false }
Fields
auth/auto-token
-
Auto-Auth token.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/auth/auto-token.json", "title": "Auto-Auth Token", "description": "Server issued token authorizing a specific device to use auto-auth.", "type": "string", "minLength": 64, "maxLength": 64, "pattern": "^[a-fA-F0-9]{64}$", "examples": [ "87a8999b6a7b43f6b02ebb6db45013b056b022a6b06c4638a7bfcf894d3a9d73" ] }
auth/password
-
User password.
Source
1 2 3 4 5 6 7 8
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/auth/password.json", "title": "User Password", "type": "string", "minLength": 8, "maxLength": 128 }
Common Types
Fields
meta/api-key
-
API auth token.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/meta/api-key.json", "title": "API Auth Key", "description": "Access token issued on successful authentication with the service.", "type": "string", "minLength": 32, "maxLength": 32, "pattern": "^[^\\s]+$", "examples": [ "7c230127294e47598054e881019dba67" ] }
meta/date-time
-
RFC3339 timestamp.
Source
1 2 3 4 5 6 7 8 9 10 11 12
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/meta/date-time.json", "title": "RFC3339 Timestamp", "description": "An RFC3339 timestamp including date, time, fractional seconds, and timezone offset.", "type": "string", "format": "date-time", "examples": [ "2020-09-18T10:38:41.3508+0400", "2020-10-31T11:58:27.0026Z" ] }
meta/request-id
-
Unique request ID.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/meta/request-id.json", "title": "Request ID", "description": "The ID of the request that caused this error.\nUsed to enable tracing an error for a specific request.\n\nRequest IDs are generated via the https://github.com/teris-io/shortid package.", "type": "string", "minLength": 8, "maxLength": 15, "pattern": "^[^\\s]+$", "examples": [ "iNove6iQ9J", "NVDve6-9Q", "VVDvc6i99J" ] }
pg/serial8
-
Postgres
BIGSERIAL
type. Used for record IDs.Source
1 2 3 4 5 6 7
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/pg/serial8.json", "type": "integer", "minimum": 1, "maximum": 9223372036854775807 }
Error Types
Full Types
error/400
-
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/error/400.json", "type": "object", "properties": { "status": { "title": "Error Status Type", "type": "string", "enum": [ "bad-request" ] }, "requestId": { "$ref": "../meta/request-id.json" }, "message": { "title": "Error Message", "description": "User friendly message describing the error.", "type": "string" }, "validation": { "title": "Request Schema Validation Errors", "type": "array", "items": { "type": "object", "properties": { "path": { "title": "Property Path", "description": "Path to the JSON property for this error set.", "type": "array", "items": { "type": "string" }, "minItems": 1, "examples": [ ["pairs", "1", "value"], ["email"] ] }, "errors": { "title": "Errors", "description": "List of errors relating to the key pointed to by \"path\".", "type": "array", "items": { "type": "string" }, "minItems": 1, "examples": [ ["Expected value of type string, got int."], ["Value must be less than 10", "Value must be greater than 2"] ] } }, "required": [ "errors", "path" ], "additionalProperties": false }, "minItems": 1 } }, "required": [ "status", "message", "requestId" ], "additionalProperties": false, "examples": [ { "status": "bad-request", "requestId": "tFmGc6iQQs", "message": "Request body did not resemble the expected input.", "validation": [ { "path": ["email"], "errors": ["Given value does not resemble a valid email address."] } ] }, { "status": "bad-request", "requestId": "tFmGc6iQQs", "message": "Request body did not resemble the expected input." } ] }
error/401
-
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/error/401.json", "type": "object", "properties": { "status": { "title": "Error Status Type", "type": "string", "enum": [ "unauthorized" ] }, "requestId": { "$ref": "../meta/request-id.json" }, "message": { "title": "Error Message", "description": "User friendly message describing the error.", "type": "string" } }, "required": [ "status", "message", "requestId" ], "additionalProperties": false, "examples": [ { "status": "unauthorized", "requestId": "tFmGc6iQQs", "message": "Users must be logged in to access this resource." } ] }
error/403
-
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/error/403.json", "type": "object", "properties": { "status": { "title": "Error Status Type", "type": "string", "enum": [ "forbidden" ] }, "requestId": { "$ref": "../meta/request-id.json" }, "message": { "title": "Error Message", "description": "User friendly message describing the error.", "type": "string" } }, "required": [ "status", "message", "requestId" ], "additionalProperties": false, "examples": [ { "status": "forbidden", "requestId": "tFmGc6iQQs", "message": "Modifying a user's ID is not allowed." } ] }
error/404
-
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/error/404.json", "type": "object", "properties": { "status": { "title": "Error Status Type", "type": "string", "enum": [ "not-found" ] }, "requestId": { "$ref": "../meta/request-id.json" }, "message": { "title": "Error Message", "description": "User friendly message describing the error.", "type": "string" } }, "required": [ "status", "message", "requestId" ], "additionalProperties": false, "examples": [ { "status": "not-found", "requestId": "tFmGc6iQQs", "message": "The requested resource was not found." } ] }
error/405
-
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/error/405.json", "type": "object", "properties": { "status": { "title": "Error Status Type", "type": "string", "enum": [ "invalid-http-method" ] }, "requestId": { "$ref": "../meta/request-id.json" }, "message": { "title": "Error Message", "description": "User friendly message describing the error.", "type": "string" } }, "required": [ "status", "message", "requestId" ], "additionalProperties": false, "examples": [ { "status": "invalid-http-method", "requestId": "tFmGc6iQQs", "message": "This endpoint does not support POST requests." } ] }
error/429
-
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/error/429.json", "type": "object", "properties": { "status": { "title": "Error Status Type", "type": "string", "enum": [ "rate-limited" ] }, "requestId": { "$ref": "../meta/request-id.json" }, "message": { "title": "Error Message", "description": "User friendly message describing the error.", "type": "string" } }, "required": [ "status", "message", "requestId" ], "additionalProperties": false, "examples": [ { "status": "rate-limited", "requestId": "tFmGc6iQQs", "message": "Too many requests. Please slow down." } ] }
error/500
-
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/error/500.json", "type": "object", "properties": { "status": { "title": "Error Status Type", "type": "string", "enum": [ "server-error" ] }, "requestId": { "$ref": "../meta/request-id.json" }, "message": { "title": "Error Message", "description": "User friendly message describing the error.", "type": "string" } }, "required": [ "status", "message", "requestId" ], "additionalProperties": false, "examples": [ { "status": "server-error", "requestId": "tFmGc6iQQs", "message": "Service has lost connection to it's backing database." } ] }
Device Types
Full Types
device/full
-
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/device/full.json", "title": "Extended Device Record", "definitions": { "id": { "title": "Record ID", "description": "Service assigned unique identifier for the device record.", "$ref": "../pg/serial8.json" }, "deviceName": { "title": "Detected Name", "description": "The name of the device detected or generated by the app running on that device. May contain hardware or OS info.", "type": "string", "minLength": 8, "maxLength": 64 }, "displayName": { "title": "Display Name", "description": "User provided display/nickname for the device.", "type": "string", "minLength": 3, "maxLength": 64 }, "lastLogin": { "title": "Last Login", "description": "Timestamp for the last time this device logged in", "type": "string", "format": "date-time" }, "trusted": { "title": "Device Trust Details", "description": "Information about when/if this device is trusted. If the device is not trusted, the \"trusted\" property will be absent entirely.", "type": "object", "properties": { "since": { "title": "Trusted Since", "description": "Timestamp for when the device was marked as trusted.", "type": "string", "format": "date-time" } }, "required": [ "since" ], "additionalProperties": false } }, "type": "object", "properties": { "id": { "$ref": "#/definitions/id" }, "deviceId": { "$ref": "device-id.json" }, "deviceName": { "$ref": "#/definitions/deviceName" }, "displayName": { "$ref": "#/definitions/displayName" }, "lastLogin": { "$ref": "#/definitions/lastLogin" }, "trusted": { "$ref": "#/definitions/trusted" } }, "required": [ "id", "deviceId", "deviceName", "lastLogin" ], "additionalProperties": false }
device/trust
-
Device trust response body.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/device/trust.json", "type": "object", "properties": { "token": { "$ref": "../auth/auto-token.json" } }, "required": [ "token" ], "additionalProperties": false }
Fields
device/device-id
-
Source
1 2 3 4 5 6 7 8 9 10
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/device/device-id.json", "title": "Device Identifier", "description": "Unique identifier for a user device. This ID is generated by the app on first load.", "type": "string", "minLength": 32, "maxLength": 32, "pattern": "^[a-fA-F0-9]{32}$" }
Task Types
Full Types
Tasks
task/full
-
A full/extended task object.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/task/full.json", "type": "object", "properties": { "id": { "$ref": "../pg/serial8.json" }, "name": { "$ref": "name.json" }, "description": { "type": "string", "maxLength": 1024 }, "creator": { "$ref": "../user/short.json" }, "assignees": { "type": "array", "items": { "$ref": "../user/short.json" } }, "steps": { "type": "array", "items": { "$ref": "step/short.json" } }, "created": { "$ref": "../meta/date-time.json" }, "updated": { "$ref": "../meta/date-time.json" }, "deleted": { "$ref": "../meta/date-time.json" } }, "required": [ "id", "name", "creator", "created", "updated" ], "additionalProperties": false }
task/short
-
An abbreviated task object.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/task/short.json", "type": "object", "properties": { "id": { "$ref": "../pg/serial8.json" }, "name": { "$ref": "name.json" } }, "required": [ "id", "name" ], "additionalProperties": false }
task/new
-
Task creation payload.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/task/full.json", "title": "Task Creation Payload", "type": "object", "properties": { "name": { "$ref": "name.json" }, "description": { "type": "string", "maxLength": 1024 } }, "required": [ "id", "name" ], "additionalProperties": false }
task/name-result
-
Type-ahead search result item for task names.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/task/name-result.json", "type": "object", "properties": { "id": { "$ref": "../pg/serial8.json" }, "name": { "type": "string", "minLength": 3, "maxLength": 128 } }, "required": [ "id", "name" ], "additionalProperties": false }
Steps
task/step/full
-
A full/extended step object.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/task/step/full.json", "title": "Full Task Step Record", "type": "object", "properties": { "id": { "$ref": "../../pg/serial8.json" }, "task": { "$ref": "../short.json" }, "description": { "type": "string", "minLength": 3, "maxLength": 1024 }, "position": { "type": "integer", "minimum": 1, "maximum": 32767 }, "creator": { "$ref": "../../user/short.json" }, "created": { "$ref": "../../meta/date-time.json" }, "updated": { "$ref": "../../meta/date-time.json" }, "deleted": { "$ref": "../../meta/date-time.json" } }, "required": [ "id", "task", "description", "position", "creator", "created", "updated" ] }
task/step/short
-
An abbreviated step object.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/task/step/short.json", "title": "Abbreviated Task Step Record", "type": "object", "properties": { "id": { "$ref": "../../pg/serial8.json" }, "taskId": { "$ref": "../../pg/serial8.json" }, "description": { "type": "string", "minLength": 3, "maxLength": 32 }, "position": { "type": "integer", "minimum": 1, "maximum": 32767 } }, "required": [ "id", "taskId", "description", "position" ] }
Tags
task/tag
-
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/task/tag.json", "type": "object", "properties": { "id": { "$ref": "../pg/serial8.json" }, "name": { "type": "string", "minLength": 3, "maxLength": 32 } }, "required": [ "id", "name" ], "additionalProperties": false }
Fields
task/name
-
Source
1 2 3 4 5 6 7 8 9
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/task/name.json", "title": "Task Name", "type": "string", "minLength": 3, "maxLength": 128, "pattern": "^[^\\s][^\r\n]+[^\\s]$" }
User Types
Full Types
user/full
-
A full/extended user object.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/user/full.json", "title": "Extended User Record", "definitions": { "userId": { "title": "User ID", "$ref": "../pg/serial8.json" }, "displayName": { "title": "User Display Name", "type": "string", "minLength": 3, "maxLength": 64 }, "email": { "title": "User Email Address", "type": "string", "format": "email" } }, "type": "object", "properties": { "id": { "$ref": "#/definitions/userId" }, "displayName": { "$ref": "#/definitions/displayName" }, "email": { "$ref": "#/definitions/email" }, "created": { "title": "User Creation Timestamp", "$ref": "../meta/date-time.json" }, "providers": { "title": "Support Providers", "description": "A list of users who have connected accounts with this user as support providers.", "type": "array", "items": { "$ref": "short.json#" } }, "supports": { "title": "Supported Users", "description": "A list of users who have connected accounts with this user as users this user supports.", "type": "array", "items": { "$ref": "short.json#" } } }, "required": [ "id", "displayName", "email", "created" ], "additionalProperties": false }
user/short
-
An abbreviated user object.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/user/short.json", "title": "Short User Record", "type": "object", "properties": { "id": { "$ref": "full.json#/definitions/userId" }, "displayName": { "$ref": "full.json#/definitions/displayName" } }, "required": [ "id", "displayName" ], "additionalProperties": false }
user/new
-
User creation payload.
Source
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://softask-app.github.io/api-types/v1/types/user/new.json", "title": "User Creation Payload", "type": "object", "properties": { "displayName": { "$ref": "full.json#/definitions/displayName" }, "email": { "$ref": "full.json#/definitions/email" }, "password": { "type": "string", "minLength": 8, "maxLength": 128 } }, "required": [ "displayName", "email", "password" ], "additionalProperties": false }