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
}