Document toolboxDocument toolbox

Proposed json Patterns

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/+OtkIKGO7fAE
  • looks 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

Needs Pattern = yes

Suggested Regular Expression