Validate URI Documentation

Shared Validate Throttle: 500/Hour

Object: URI

URI
Output is Limited to 2048 Bytes! This is calculated on IDNA + URI Percent Encoded Output and NOT Unicode Output!

print
Object: Print

Example

"print": {
	"uri": "//xn--238h",
	"iri": "//😻",
	"normalized-uri": "//xn--238h",
	"normalized-iri": "//😻"
}
scheme
Object: Scheme

Example

"scheme": {
	"print": {
		"uri": "http",
		"iri": "http"
	},
	"encoding": {},
	"correct": true
}
authority
Object: Authority

Example

"authority": {
	"print": {
		"uri": "user@juandefu.ca:80",
		"iri": "user@juandefu.ca:80"
	},
	"encoding": {},
	"userinfo": {
		"print": {
			"uri": "user",
			"iri": "user"
		},
		"username": {
			"print": {
				"opaque": [
					"user"
				]
			},
			"encoding": {},
			"correct": true
		},
		"password": {
			"print": {
				"opaque": [
					"pass"
				]
			},
			"encoding": {},
			"correct": true
		},
		"confidential": true,
		"correct": true
	},
	"host": {
		"encoding": {},
		"host": {
			"print": {
				"unicode": "juandefu.ca",
				"unicode-email": "juandefu.ca",
				"idna": "juandefu.ca"
			},
			"hostname": {
				"print": {
					"unicode": "juandefu.ca",
					"idna": "juandefu.ca",
					"percent-encoded": "juandefu.ca"
				},
				"labels": [
					{
						"print": {
							"unicode": "juandefu"
						},
						"encoding": {},
						"delimiter": 1,
						"correct": true
					},
					{
						"print": {
							"unicode": "ca"
						},
						"encoding": {},
						"correct": true
					}
				],
				"correct": true,
				"correct-email": true,
				"tld-real": true,
				"tld-pos": 1
			},
			"correct": true,
			"correct-email": true
		},
		"correct": true
	},
	"port": {
		"port": 80,
		"correct": true
	},
	"correct": true
}
path
Object: Path

Example

"path": {
	"print": {
		"iri": "relative/path/../../index.html"
	},
	"directories": [
		{
			"print": {
				"iri": "relative"
			},
			"correct": true
		},
		{
			"print": {
				"iri": "path"
			},
			"delimiter": true,
			"correct": true
		},
		{
			"print": {
				"iri": ".."
			},
			"delimiter": true,
			"correct": true
		},
		{
			"print": {
				"iri": ".."
			},
			"delimiter": true,
			"correct": true
		},
		{
			"print": {
				"iri": "index.html"
			},
			"delimiter": true,
			"correct": true
		}
	],
	"complete-tree": {
		"print": {
			"uri": "index.html",
			"iri": "index.html"
		},
		"branches": [
			1
		],
		"directories": [
			4
		],
		"root": {
			"branches": [
				{
					"directories": [
						0,
						3
					],
					"branches": [
						{
							"directories": [
								1,
								2
							]
						}
					]
				},
				{
					"directories": [
						4
					]
				}
			]
		}
	},
	"relative": true,
	"correct": true
}
query
Object: Query

Example

"query": {
	"print": {
		"uri": "up=dog",
		"iri": "up=dog"
	},
	"keyvalues": [
		{
			"key": {
				"print": {
					"opaque": [
						"up"
					]
				},
				"encoding": {},
				"correct": true
			},
			"value": {
				"print": {
					"opaque": [
						"dog"
					]
				},
				"encoding": {},
				"correct": true
			},
			"correct": true
		}
	],
	"correct": true
}
fragment
Object: Fragment

Example

"fragment": {
	"print": {
		"opaque": [
			"nmu"
		],
		"uri": "nmu",
		"iri": "nmu"
	},
	"encoding": {},
	"correct": true
}
conflict-scheme
Boolean
This will only be avaliable with Relative Paths!

Will Path Conflict with Scheme? Conflicts MUST be prefixed with ./

Example

"conflict-scheme": false
conflict-authority
Boolean
This will only be avaliable with Absolute Paths!

Will Path Conflict with Authority? Conflicts MUST be prefixed with /.

Example

"conflict-authority": false
conflict-segment-scheme
Boolean
This will only be avaliable with Relative Paths!

Will Normalized Segment Path Conflict with Scheme? Conflicts MUST be prefixed with ./

Example

"conflict-segment-scheme": false
conflict-segment-authority
Boolean
This will only be avaliable with Absolute Paths!

Will Normalized Segment Path Conflict with Authority? Conflicts MUST be prefixed with /.

Example

"conflict-segment-authority": false
conflict-segment-lowercase-scheme
Boolean
This will only be avaliable with Relative Paths!

Will Normalized Lowercase Segment Path Conflict with Scheme? Conflicts MUST be prefixed with ./

Example

"conflict-segment-lowercase-scheme": false
conflict-segment-lowercase-authority
Boolean
This will only be avaliable with Absolute Paths!

Will Normalized Lowercase Segment Path Conflict with Authority? Conflicts MUST be prefixed with /.

Example

"conflict-segment-lowercase-authority": false
conflict-complete-scheme
Boolean
This will only be avaliable with Relative Paths!

Will Normalized Complete Path Conflict with Scheme? Conflicts MUST be prefixed with ./

Example

"conflict-complete-scheme": false
conflict-complete-authority
Boolean
This will only be avaliable with Absolute Paths!

Will Normalized Complete Path Conflict with Authority? Conflicts MUST be prefixed with /.

Example

"conflict-complete-authority": false
conflict-complete-lowercase-scheme
Boolean
This will only be avaliable with Relative Paths!

Will Normalized Lowercase Complete Path Conflict with Scheme? Conflicts MUST be prefixed with ./

Example

"conflict-complete-lowercase-scheme": false
conflict-complete-lowercase-authority
Boolean
This will only be avaliable with Absolute Paths!

Will Normalized Lowercase Complete Path Conflict with Authority? Conflicts MUST be prefixed with /.

Example

"conflict-complete-lowercase-authority": false
conflict-path-missing
Boolean
Was Path missing when it should exist?

Example

"conflict-path-missing": "false"
url
Boolean
Is URI a URL?

Example

"url": "true"
urn
Boolean
Is URI a URN?

Example

"url": "false"
confidential
Boolean
If a UserInfo Password Object exists this is considered confidential

Example

"confidential": "false"
dangerous
Boolean
Is this Potentially Dangerous?

Example

"dangerous": false
correct
Boolean
Was Input Correct to the Spec?

Example

"correct": true

Object Examples: URI

Authority Input: "//😻"
{
	"print": {
		"uri": "//xn--238h",
		"iri": "//😻",
		"normalized-uri": "//xn--238h",
		"normalized-iri": "//😻"
	},
	"authority": {
		"print": {
			"uri": "xn--238h",
			"iri": "😻"
		},
		"encoding": {},
		"host": {
			"encoding": {},
			"host": {
				"print": {
					"unicode": "😻",
					"unicode-email": "😻",
					"idna": "xn--238h"
				},
				"hostname": {
					"print": {
						"unicode": "😻",
						"idna": "xn--238h",
						"percent-encoded": "%F0%9F%98%BB"
					},
					"labels": [
						{
							"print": {
								"unicode": "😻"
							},
							"encoding": {
								"unicode": true,
								"idna-excluded": true
							},
							"correct": true
						}
					],
					"correct": true,
					"correct-email": true,
					"tld": true,
					"tld-pos": -1
				},
				"correct": true,
				"correct-email": true
			},
			"correct": true
		},
		"correct": true
	},
	"correct": true
}
Scheme Authority Path Query Fragment Input: "http://user:pass@juandefu.ca:80/whats?up=dog#nmu"
{
	"print": {
		"uri": "http://user:pass@juandefu.ca:80/whats?up=dog#nmu",
		"iri": "http://user:pass@juandefu.ca:80/whats?up=dog#nmu",
		"normalized-uri": "http://user@juandefu.ca/whats?up=dog#nmu",
		"normalized-iri": "http://user@juandefu.ca/whats?up=dog#nmu"
	},
	"scheme": {
		"print": {
			"uri": "http",
			"iri": "http"
		},
		"encoding": {},
		"correct": true
	},
	"authority": {
		"print": {
			"uri": "user@juandefu.ca:80",
			"iri": "user@juandefu.ca:80"
		},
		"encoding": {},
		"userinfo": {
			"print": {
				"uri": "user",
				"iri": "user"
			},
			"username": {
				"print": {
					"opaque": [
						"user"
					]
				},
				"encoding": {},
				"correct": true
			},
			"password": {
				"print": {
					"opaque": [
						"pass"
					]
				},
				"encoding": {},
				"correct": true
			},
			"confidential": true,
			"correct": true
		},
		"host": {
			"encoding": {},
			"host": {
				"print": {
					"unicode": "juandefu.ca",
					"unicode-email": "juandefu.ca",
					"idna": "juandefu.ca"
				},
				"hostname": {
					"print": {
						"unicode": "juandefu.ca",
						"idna": "juandefu.ca",
						"percent-encoded": "juandefu.ca"
					},
					"labels": [
						{
							"print": {
								"unicode": "juandefu"
							},
							"encoding": {},
							"delimiter": 1,
							"correct": true
						},
						{
							"print": {
								"unicode": "ca"
							},
							"encoding": {},
							"correct": true
						}
					],
					"correct": true,
					"correct-email": true,
					"tld-real": true,
					"tld-pos": 1
				},
				"correct": true,
				"correct-email": true
			},
			"correct": true
		},
		"port": {
			"port": 80,
			"correct": true
		},
		"correct": true
	},
	"path": {
		"print": {
			"iri": "/whats"
		},
		"directories": [
			{
				"print": {
					"iri": "whats"
				},
				"delimiter": true,
				"correct": true
			}
		],
		"complete-tree": {
			"print": {
				"uri": "/whats",
				"iri": "/whats"
			},
			"branches": [
				0
			],
			"directories": [
				0
			],
			"root": {
				"branches": [
					{
						"directories": [
							0
						]
					}
				]
			}
		},
		"correct": true
	},
	"query": {
		"print": {
			"uri": "up=dog",
			"iri": "up=dog"
		},
		"keyvalues": [
			{
				"key": {
					"print": {
						"opaque": [
							"up"
						]
					},
					"encoding": {},
					"correct": true
				},
				"value": {
					"print": {
						"opaque": [
							"dog"
						]
					},
					"encoding": {},
					"correct": true
				},
				"correct": true
			}
		],
		"correct": true
	},
	"fragment": {
		"print": {
			"opaque": [
				"nmu"
			],
			"uri": "nmu",
			"iri": "nmu"
		},
		"encoding": {},
		"correct": true
	},
	"url": true,
	"confidential": true,
	"correct": true
}
URN Input:"urn:isbn:0901720313"
{
	"print": {
		"uri": "urn:isbn:0901720313",
		"iri": "urn:isbn:0901720313",
		"normalized-uri": "urn:isbn:0901720313",
		"normalized-iri": "urn:isbn:0901720313"
	},
	"scheme": {
		"print": {
			"uri": "urn",
			"iri": "urn"
		},
		"encoding": {},
		"correct": true
	},
	"path": {
		"print": {
			"iri": "isbn:0901720313"
		},
		"directories": [
			{
				"print": {
					"iri": "isbn:0901720313"
				},
				"correct": true
			}
		],
		"complete-tree": {
			"print": {
				"uri": "isbn:0901720313",
				"iri": "isbn:0901720313"
			},
			"branches": [
				0
			],
			"directories": [
				0
			],
			"root": {
				"branches": [
					{
						"directories": [
							0
						]
					}
				]
			},
			"conflict-scheme": true
		},
		"relative": true,
		"conflict-scheme": true,
		"correct": true
	},
	"urn": true,
	"dangerous": true,
	"correct": true
}
Path Input:"relative/path/../../index.html"
{
	"print": {
		"uri": "relative/path/../../index.html",
		"iri": "relative/path/../../index.html",
		"normalized-uri": "index.html",
		"normalized-iri": "index.html"
	},
	"path": {
		"print": {
			"iri": "relative/path/../../index.html"
		},
		"directories": [
			{
				"print": {
					"iri": "relative"
				},
				"correct": true
			},
			{
				"print": {
					"iri": "path"
				},
				"delimiter": true,
				"correct": true
			},
			{
				"print": {
					"iri": ".."
				},
				"delimiter": true,
				"correct": true
			},
			{
				"print": {
					"iri": ".."
				},
				"delimiter": true,
				"correct": true
			},
			{
				"print": {
					"iri": "index.html"
				},
				"delimiter": true,
				"correct": true
			}
		],
		"complete-tree": {
			"print": {
				"uri": "index.html",
				"iri": "index.html"
			},
			"branches": [
				1
			],
			"directories": [
				4
			],
			"root": {
				"branches": [
					{
						"directories": [
							0,
							3
						],
						"branches": [
							{
								"directories": [
									1,
									2
								]
							}
						]
					},
					{
						"directories": [
							4
						]
					}
				]
			}
		},
		"relative": true,
		"correct": true
	},
	"dangerous": true,
	"correct": true
}

Object: URI_Options

POST APIs only support setting Options. Attributes are displayed when set to true.
GET APIs return the Default set Options.
print
Object: Print_Options
scheme
Object: Scheme_Options
authority
Object: Authority_Options
path
Object: Path_Options
query
Object: Query_Options
fragment
Object: Fragment_Options
conflict-scheme
Boolean
conflict-authority
Boolean
conflict-segment-scheme
Boolean
conflict-segment-authority
Boolean
conflict-segment-lowercase-scheme
Boolean
conflict-segment-lowercase-authority
Boolean
conflict-complete-scheme
Boolean
conflict-complete-authority
Boolean
conflict-complete-lowercase-scheme
Boolean
conflict-complete-lowercase-authority
Boolean
conflict-path-missing
Boolean
url
Boolean
urn
Boolean
confidential
Boolean
dangerous
Boolean
correct
Boolean

Object Examples: URI_Options

Default Options:
{
	"print": {
		"uri": true,
		"iri": true,
		"normalized-uri": true,
		"normalized-iri": true,
		"normalized-segment-uri": false,
		"normalized-segment-iri": false,
		"ignore-ports": {
			"http": [
				80
			],
			"https": [
				443
			]
		}
	},
	"scheme": {
		"print": {
			"uri": true,
			"iri": true
		},
		"encoding": {
			"cleaned": true,
			"unicode": true,
			"pe-necessary": true,
			"pe-unnecessary": true,
			"pe-partial": true,
			"idna": true,
			"idna-invalid": true,
			"idna-normalized": true,
			"idna-normalize-failed": true,
			"idna-excluded": true
		},
		"invalid-syntax": true,
		"dangerous": true,
		"correct": true
	},
	"authority": {
		"print": {
			"uri": true,
			"iri": true,
			"ignore-ports": null
		},
		"encoding": {
			"port": true
		},
		"userinfo": {
			"print": {
				"uri": true,
				"iri": true
			},
			"username": {
				"print": {
					"opaque": true,
					"uri": false,
					"iri": false
				},
				"encoding": {
					"cleaned": true,
					"unicode": true,
					"pe-necessary": true,
					"pe-unnecessary": true,
					"pe-partial": true,
					"pe-invalid": true
				},
				"correct": true
			},
			"password": {
				"print": {
					"opaque": true,
					"uri": false,
					"iri": false
				},
				"encoding": {
					"cleaned": true,
					"unicode": true,
					"pe-necessary": true,
					"pe-unnecessary": true,
					"pe-partial": true,
					"pe-invalid": true
				},
				"correct": true
			},
			"confidential": true,
			"correct": true
		},
		"host": {
			"encoding": {
				"ip": true,
				"prefix": true
			},
			"host": {
				"print": {
					"unicode": true,
					"unicode-email": true,
					"idna": true,
					"idna-email": false,
					"percent-encoded": false
				},
				"literal": true,
				"zoneid": {
					"print": {
						"uri": true,
						"iri": true
					},
					"encoding": {
						"cleaned": true,
						"unicode": true,
						"pe-necessary": true,
						"pe-unnecessary": true,
						"pe-partial": true,
						"pe-invalid": true
					},
					"zoneid": true,
					"correct": true
				},
				"ip": {
					"print": {
						"parsed": false,
						"ipv4": true,
						"ipv4historic": false,
						"ipv6short": true,
						"ipv6v4short": true,
						"ipv6long": true,
						"ipv6v4long": false
					},
					"blocks": {
						"print": null,
						"size": true,
						"base": true,
						"number": true,
						"pads": true,
						"correct": true,
						"position": true
					},
					"bytes": true,
					"version": true,
					"doublecolon-v6": true,
					"doublecolon-v6v4": true,
					"correct": true,
					"private": false,
					"loopback": false,
					"linklocal": false,
					"reserved": false
				},
				"ipvfuture": true,
				"hostname": {
					"print": {
						"unicode": true,
						"idna": true,
						"percent-encoded": true
					},
					"labels": {
						"print": {
							"unicode": true,
							"idna": false,
							"percent-encoded": false
						},
						"encoding": {
							"cleaned": true,
							"unicode": true,
							"pe-necessary": true,
							"pe-unnecessary": true,
							"pe-partial": true,
							"idna": true,
							"idna-invalid": true,
							"idna-normalized": true,
							"idna-normalize-failed": true,
							"idna-excluded": true
						},
						"delimiter": true,
						"correct": true
					},
					"email-toolong": true,
					"dangerous": true,
					"correct": true,
					"correct-email": true,
					"tld": true,
					"tld-invalid": true,
					"tld-real": true,
					"tld-root": true,
					"tld-pos": true
				},
				"dangerous": true,
				"correct": true,
				"correct-email": true
			},
			"registeredname": {
				"print": {
					"opaque": true,
					"uri": true,
					"iri": true
				},
				"encoding": {
					"cleaned": true,
					"unicode": true,
					"pe-necessary": true,
					"pe-unnecessary": true,
					"pe-partial": true,
					"pe-invalid": true
				},
				"correct": true
			},
			"dangerous": true,
			"correct": true
		},
		"port": true,
		"dangerous": true,
		"correct": true
	},
	"path": {
		"print": {
			"uri": false,
			"iri": true
		},
		"directories": {
			"print": {
				"uri": false,
				"iri": true
			},
			"segment": null,
			"keyvalues": null,
			"delimiter": true,
			"correct": true
		},
		"complete-tree": {
			"print": {
				"uri": true,
				"iri": true
			},
			"branches": true,
			"directories": true,
			"root": true,
			"conflict-scheme": true,
			"conflict-absolute": true,
			"conflict-authority": true
		},
		"complete-lowercase-tree": null,
		"segment-tree": null,
		"segment-lowercase-tree": null,
		"relative": true,
		"conflict-scheme": true,
		"conflict-absolute": true,
		"conflict-authority": true,
		"correct": true
	},
	"query": {
		"print": {
			"uri": true,
			"iri": true
		},
		"keyvalues": {
			"key": {
				"print": {
					"opaque": true,
					"uri": false,
					"iri": false
				},
				"encoding": {
					"cleaned": true,
					"unicode": true,
					"pe-necessary": true,
					"pe-unnecessary": true,
					"pe-partial": true,
					"pe-invalid": true
				},
				"correct": true
			},
			"value": {
				"print": {
					"opaque": true,
					"uri": false,
					"iri": false
				},
				"encoding": {
					"cleaned": true,
					"unicode": true,
					"pe-necessary": true,
					"pe-unnecessary": true,
					"pe-partial": true,
					"pe-invalid": true
				},
				"correct": true
			},
			"delimiter": true,
			"correct": true
		},
		"correct": true
	},
	"fragment": {
		"print": {
			"opaque": true,
			"uri": true,
			"iri": true
		},
		"encoding": {
			"cleaned": true,
			"unicode": true,
			"pe-necessary": true,
			"pe-unnecessary": true,
			"pe-partial": true,
			"pe-invalid": true
		},
		"correct": true
	},
	"conflict-scheme": true,
	"conflict-authority": true,
	"conflict-segment-scheme": true,
	"conflict-segment-authority": true,
	"conflict-segment-lowercase-scheme": true,
	"conflict-segment-lowercase-authority": true,
	"conflict-complete-scheme": true,
	"conflict-complete-authority": true,
	"conflict-complete-lowercase-scheme": true,
	"conflict-complete-lowercase-authority": true,
	"conflict-path-missing": true,
	"url": true,
	"urn": true,
	"confidential": true,
	"dangerous": true,
	"correct": true
}

Object: Print

URI and IRI are NOT Normalized!

uri
String
URI Output

Unicode and Unsafe ASCII Characters are Percent Encoded

Example

"uri": "ascii"
"uri": "%25" // ascii % character
"uri": "%F0%9F%98%BB" // 😻
iri
String
IRI Output

Unicode is Unencoded, Unsafe ASCII Characters are Percent Encoded

Example

"iri": "unicode"
"iri": "%25" // ascii % character
"iri": "😻"
normalized-uri
String
Normalized Path based off the Complete content of a Directory
This is the Normalization field that you want to use!

Unicode and Unsafe ASCII Characters are Percent Encoded

Example

"normalized-uri": "ascii"
"normalized-uri": "%25" // ascii % character
"normalized-uri": "%F0%9F%98%BB" // 😻
normalized-iri
String
Normalized Path based off the Complete content of a Directory
This is the Normalization field that you want to use!

Unicode is Unencoded, Unsafe ASCII Characters are Percent Encoded

Example

"normalized-iri": "unicode"
"normalized-iri": "%25" // ascii % character
"normalized-iri": "😻"
normalized-segment-uri
String
Normalized Path based off the Segment content of a Directory
Do NOT use this unless you know what you are doing!

Unicode and Unsafe ASCII Characters are Percent Encoded

Example

"normalized-segment-uri": "ascii"
"normalized-segment-uri": "%25" // ascii % character
"normalized-segment-uri": "%F0%9F%98%BB" // 😻
normalized-segment-iri
String
Normalized Path based off the Segment content of a Directory
Do NOT use this unless you know what you are doing!

Unicode is Unencoded, Unsafe ASCII Characters are Percent Encoded

Example

"normalized-segment-iri": "unicode"
"normalized-segment-iri": "%25" // ascii % character
"normalized-segment-iri": "😻"

Object Examples: Print

Authority Input: "//😻"
{
	"uri": "//xn--238h",
	"iri": "//😻",
	"normalized-uri": "//xn--238h",
	"normalized-iri": "//😻",
	"normalized-segment-uri": "//xn--238h",
	"normalized-segment-iri": "//😻"
}
Scheme Authority Path Query Fragment Input: "http://user:pass@juandefu.ca:80/whats?up=dog#nmu"
{
	"uri": "http://user:pass@juandefu.ca:80/whats?up=dog#nmu",
	"iri": "http://user:pass@juandefu.ca:80/whats?up=dog#nmu",
	"normalized-uri": "http://user@juandefu.ca/whats?up=dog#nmu",
	"normalized-iri": "http://user@juandefu.ca/whats?up=dog#nmu",
	"normalized-segment-uri": "http://user@juandefu.ca/whats?up=dog#nmu",
	"normalized-segment-iri": "http://user@juandefu.ca/whats?up=dog#nmu"
}
URN Input:"urn:isbn:0901720313"
{
	"uri": "urn:isbn:0901720313",
	"iri": "urn:isbn:0901720313",
	"normalized-uri": "urn:isbn:0901720313",
	"normalized-iri": "urn:isbn:0901720313",
	"normalized-segment-uri": "urn:isbn:0901720313",
	"normalized-segment-iri": "urn:isbn:0901720313"
}
Path Input:"relative/path/../../index.html"
{
	"uri": "relative/path/../../index.html",
	"iri": "relative/path/../../index.html",
	"normalized-uri": "index.html",
	"normalized-iri": "index.html",
	"normalized-segment-uri": "index.html",
	"normalized-segment-iri": "index.html"
}

Object: Print_Options

POST APIs only support setting Options. Attributes are displayed when set to true.
GET APIs return the Default set Options.
uri
Boolean
iri
Boolean
normalized-uri
Boolean
normalized-iri
Boolean
normalized-segment-uri
Boolean
normalized-segment-iri
Boolean
ignore-ports
Object: {string: []Number}
Ignore Ports is an Object of String Keys pointing to a Value of an Array of Numbers.
The Key is the lowercased normalized Scheme, ie: http, https, ftp, ssh, or "" for no scheme.
The Values are an Array of Ports in Authority to ignore if Scheme matches!

Example

Default Ignore Ports:
{
	"http": [
		80
	],
	"https": [
		443
	]
}

POST /api;v1.0/validate/uri

JSON POST endpoint. Supports Validator Options!

Request

Parameters

raw
String
Raw Input to Validate

Example

"raw": "http://juandefu.ca/"
validator
Number
Optional
Method of Validation to use.
STRICT Validation will not allow Incorrect Spec Validation to occur! It's recommended to use LOOSE!
LOOSE_ASIS assumes percent encoding DOES NOT EXIST and any percent characters will be encoded!

The Default/Invalid Validator is LOOSE

Constants

Key Value
STRICT 1
LOOSE 2
LOOSE_ASIS 3


Example

"validator": 0
options
Object: URI_Options
Optional
Validator Options
Default Options will be used when nil

shorten
Boolean
Optional
Shorten Validated Object
Shortened Object may include other URI Compments needed to create a Valid URI Object
Validated must be Valid and Shorten must not be Throttled!

Example

"shorten": true
shorten-private
Boolean
Optional
If this is set you will only be able to access the Shortened Link with a Private Key!
Private is a very large Random Integer up to 2^64 (18,446,744,073,709,551,615) and should be very hard to brute force!
DO NOT RELY SOLEY ON THIS FOR SECURITY!

Example

"private": true

Response

errors
[]String
This is only returned on Internal Errors! Always check the Response Header Content-Type before parsing!

Example

"errors": [
	"internal server error"
]
shortened
Object: Shortened
If Validated is Throttled or an error occurs Shortened will be ignored!

validated
Object: URI Validated
Always returned!

If Throttled, returns an Object containing the Attribute "throttle" with a value of the Throttle Expiration Timestamp RFC 3339


GET /api;v1.0/validate/uri

GET endpoint that only uses Query String Parameters. Supports JSONP!
Content must be properly encoded to fit within the Query String Field Variable "raw"!

Request

Parameters

raw
String
Raw Input to Validate

Example

"raw": "http://juandefu.ca/"
validator
Number
Optional
Method of Validation to use.
STRICT Validation will not allow Incorrect Spec Validation to occur! It's recommended to use LOOSE!
LOOSE_ASIS assumes percent encoding DOES NOT EXIST and any percent characters will be encoded!

The Default/Invalid Validator is LOOSE

Constants

Key Value
STRICT 1
LOOSE 2
LOOSE_ASIS 3


Example

validator=2
shorten
Exists
Optional
Shorten Validated Object
Shortened Object may include other URI Compments needed to create a Valid URI Object
Validated must be Valid and Shorten must not be Throttled!

shorten-private
Exists
Optional
If this is set you will only be able to access the Shortened Link with a Private Key!
Private is a very large Random Integer up to 2^64 (18,446,744,073,709,551,615) and should be very hard to brute force!
DO NOT RELY SOLEY ON THIS FOR SECURITY!

jsonp
String
Optional
JSONP will be used to pad the JSON payload with a Function.
Must be a-zA-Z and 15 characters or less.
If JSONP is set and is empty or invalid "ZeroOut" will be used!

Example

jsonp=Whoa
Whoa({});
pd
Exists
Optional
Should Input be Percent Decoded before being passed to the Validator?
Most Validators will do their own Percent Decoding of Input.
This should only be used if necessary or if the Validator does not support Percent Decoding.

Response

errors
[]String
This is only returned on Internal Errors! Always check the Response Header Content-Type before parsing!

Example

"errors": [
	"internal server error"
]
shortened
Object: Shortened
If Validated is Throttled or an error occurs Shortened will be ignored!

validated
Object: URI Validated
Always returned!

If Throttled, returns an Object containing the Attribute "throttle" with a value of the Throttle Expiration Timestamp RFC 3339


GET /api;v1.0/validate/uri/after?

GET endpoint that uses Directory Parameters and the whole content of Query String (?) as the Raw Parameter. Supports JSONP!
This is useful if you are unsure or unable to properly encode a Query String Variable.
This will not support Fragments if # is not encoded! Fragments are client side only!
Variables are appended to the Directory 'after' with the ; Delimiter and before the Query String! Order of parameters is not important.
Example:
Request: /api;v1.0/validate/uri/after;jsonp=Whoa;shorten;validator=2?http://juandefu.ca/?hey=ya
Parameters: ;jsonp=Whoa;shorten;validator=2
Validate: http://juandefu.ca/?hey=ya

Request

Parameters

validator
Number
Optional
Method of Validation to use.
STRICT Validation will not allow Incorrect Spec Validation to occur! It's recommended to use LOOSE!
LOOSE_ASIS assumes percent encoding DOES NOT EXIST and any percent characters will be encoded!

The Default/Invalid Validator is LOOSE

Constants

Key Value
STRICT 1
LOOSE 2
LOOSE_ASIS 3


Example

validator=2
shorten
Exists
Optional
Shorten Validated Object
Shortened Object may include other URI Compments needed to create a Valid URI Object
Validated must be Valid and Shorten must not be Throttled!

shorten-private
Exists
Optional
If this is set you will only be able to access the Shortened Link with a Private Key!
Private is a very large Random Integer up to 2^64 (18,446,744,073,709,551,615) and should be very hard to brute force!
DO NOT RELY SOLEY ON THIS FOR SECURITY!

jsonp
String
Optional
JSONP will be used to pad the JSON payload with a Function.
Must be a-zA-Z and 15 characters or less.
If JSONP is set and is empty or invalid "ZeroOut" will be used!

Example

jsonp=Whoa
Whoa({});
pd
Exists
Optional
Should Input be Percent Decoded before being passed to the Validator?
Most Validators will do their own Percent Decoding of Input.
This should only be used if necessary or if the Validator does not support Percent Decoding.

Response

errors
[]String
This is only returned on Internal Errors! Always check the Response Header Content-Type before parsing!

Example

"errors": [
	"internal server error"
]
shortened
Object: Shortened
If Validated is Throttled or an error occurs Shortened will be ignored!

validated
Object: URI Validated
Always returned!

If Throttled, returns an Object containing the Attribute "throttle" with a value of the Throttle Expiration Timestamp RFC 3339