Proposed json Patterns
- 1 Entity.json
- 1.1 name
- 1.2 description
- 1.3 id
- 1.4 uri
- 1.5 version
- 1.6 etag
- 1.7 createdOn
- 1.8 modifiedOn
- 1.9 createdBy
- 1.10 modifiedBy
- 1.11 annotations
- 1.12 accessControlList
- 1.13 parentId
- 2 S3Token.json
- 2.1 path
- 2.2 md5
- 2.3 contentType
- 2.4 accessId
- 2.5 secretKey
- 2.6 securityToken
- 2.7 bucket
- 2.8 presignedUrl
This page is for json schema properties of type "string" who may (or may not) need a regular expression to help define allowed instances.
Page will be organized into json schemas, and will list all "string" type properties, logical rules for defining those properties, if they need a pattern, and a suggested regular expression for the properties that do need a pattern.
Entity.json
name
Logical Rules
must be a sting
can be more than one word
can have letters
can have symbols
Needs Pattern = no
description
Logical Rules
must be a string
Needs Pattern = no
id
Logical Rules
represented as a long
can only be digits
must be a size that will fit into a java long
will never be a negative
Needs Pattern = yes
Suggested Regular Expression = "\\d{1,7}"
uri
Logical Rules
will be "synapse.sagebase.org/#"
after the pound will be the type of entity, etc
Needs Pattern = yes
Suggested Regular Expression = "^(http:////synapse.sagebase.org/#).+"
version
Logical Rules
will be in format 1.0.0
so numbers, period, numbers, period, numbers
Needs Pattern = yes
Suggested Regular Expression = "\\d{1,2}\\.\\d{1,2}\\.\\d{1,2}"
etag
Logical Rules
made up of a db long
default is 0
can only be digits
must fit in a java long
will never be a negative
Needs Pattern = yes
Suggested Regular Expression = "\\d{1,7}"
createdOn
Logical Rules
in the form of java.util.Date
string must conform to that structure
example from project modifiedOn": "2011-12-07T15:01:15.528-08:00",
example from project"createdOn": "2011-12-07T15:01:15.528-08:00",
Needs Pattern = yes
Suggested Regular Expression = "2\\d{3}\\-[01]\\d{1}\\-[0123]\\d{1}T[012]\\d{1}:\\d{2}:\\d{2}\\.\\d{3}\\-\\d{2}:\\d{2}"
modifiedOn
Logical Rules
java.util.Date
string must conform to that structure
example from project modifiedOn": "2011-12-07T15:01:15.528-08:00",
example from project"createdOn": "2011-12-07T15:01:15.528-08:00",
Needs Pattern = yes
Suggested Regular Expression = "2\\d{3}\\-[01]\\d{1}\\-[0123]\\d{1}T[012]\\d{1}:\\d{2}:\\d{2}\\.\\d{3}\\-\\d{2}:\\d{2}"
createdBy
Logical Rules
in the form of an email address
can also be a single word
letters and supported email characters only
no whitespace
example is admin@sagebase.org
Needs Pattern = yes
Suggested Regular Expression = "\\S+"
modifiedBy
Logical Rules
in the form of an email address
can also be a single word
letters and supported email characters only
no whitespace
example is admin@sagebase.org
Needs Pattern = yes
Suggested Regular Expression = "\\S+"
annotations
Logical Rules
are strings
can be different number of words
can contain symbols
Needs Pattern = no
accessControlList
Logical Rules
example "/project/17496/acl"
example"/dataset/17497/acl"
must be a front-slash, supported type, front-slash, id, "acl"
Needs Pattern = yes
Suggested Regular Expression = "/(dataset|layer|location|project|preview|eula|agreement|folder|analysis|step|code)/\\d{1,7}/acl"
parentId
Logical Rules
represented by a long
will never be negative
must be digits only
must fit into java long
Needs Pattern = yes
Suggested Regular Expression = "\\d{1,7}"
S3Token.json
path
Logical Rules
should be "https://console.aws.amazon.com/s3/home"
Needs Pattern = yes
Suggested Regular Expression = "https://console.aws.amazon.com/s3/home"
md5
Logical Rules
needs to be 32 digits
needs to be all a-f and 0-9
Needs Pattern = yes
Needs Pattern = yes
Suggested Regular Expression = "^[a-fA-F0-9]{32}$"
contentType
Logical Rules
This is not something from aws, but something from services
is the MIME type
"text/html" is one
can also be application, audio, image, message, multipart, text, video, x-token
Needs Pattern = yes
Suggested Regular Expression = "(text/html|application/html|audio/html|image/html|message/html|multipart/html|text/html|video/html|x-token/html)"
accessId
Logical Rules
20 characters
all numbers and capitol letters (A-Z)
no white spaces
found on aws site can be between 16 to 32 characters, but I think I misinterpreted this
Needs Pattern = yes
Suggested Regular Expression = "^[0-9A-Z]{20}$"
secretKey
Logical Rules
letters, both lower and upper case
A to Z
numbers
random characters like + and /
40 characters long
no white spaces
Needs Pattern = yes
Suggested Regular Expression = "^\\S{40}$"
securityToken
Logical Rules
found two examples
isfakeSessionToken
AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/L
To6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3z
rkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtp
Z3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAElooks like these can vary in length
one word, no whitespace
allow numbers, letters, and random characters
Needs Pattern = yes
Suggested Regular Expression = "\\S+"
bucket
Logical Rules
naming rules for the buckets
can contain lowercase letters, numbers, periods, underscores and dashes
must start with a number or letter
must be between 3 and 255 characters long
must not be formatted as an ip address like 564.442.4.4
ip issue not supported, tired several variations, including greedy
the exact question is can it take x amount of characters and compare them against two semi-complex expressions
having trouble finding example online
Needs Pattern = yes
Suggested Regular Expression
presignedUrl
Logical Rules
generated example
example from a test
Needs Pattern = yes
Suggested Regular Expression