{"name":"HTTP Spec","scopeName":"source.httpspec","patterns":[{"name":"meta.request.httpspec","patterns":[{"include":"#request"},{"match":"^$"},{"include":"#response"}]}],"repository":{"ampersand":{"patterns":[{"name":"support.function.ampersand.httpspec","match":"(?\u003c!\\\u0026)\\\u0026(?!\\\u0026)"}]},"closingbracket":{"patterns":[{"name":"keyword.other.multiplexend.httpspec"},{"match":"\\]"}]},"comma":{"patterns":[{"name":"keyword.other.comma.httpspec.test","match":"\\,"}]},"emptyline":{"patterns":[{"match":"^\\s*$"}]},"equals":{"patterns":[{"name":"support.function.keyvaluepairseparator.httpspec","match":"\\="}]},"header":{"patterns":[{"name":"string.unquoted.uri.httpspec","match":"^([a-zA-Z\\-_]+\\:)\\s(.*)$","captures":{"1":{"name":"variable.parameter.headername.httpspec"}}}]},"invalidcomma":{"patterns":[{"name":"invalid.illegal.comma.httpspec","match":"^\\,|\\,(?=\\s)"}]},"jsonblock":{"patterns":[{"include":"source.json"}]},"methodlist":{"patterns":[{"include":"#methodname"},{"include":"#invalidcomma"},{"include":"#comma"}]},"methodname":{"patterns":[{"name":"keyword.other.method.httpspec","match":"(?:\\b)(OPTIONS|HEAD|GET|DELETE|PUT|PATCH|POST)"}]},"multiplex":{"begin":"(\\[)","end":"\\]","patterns":[{"include":"#uripart"},{"include":"#comma"}],"beginCaptures":{"0":{"name":"keyword.other"}},"endCaptures":{"0":{"name":"keyword.other"}}},"namevaluepair":{"patterns":[{"include":"#uriqueryname"},{"include":"#equals"},{"include":"#uriqueryvalue"}]},"openingbracket":{"patterns":[{"name":"keyword.other.multiplexstart.httpspec","match":"\\["}]},"questionmark":{"patterns":[{"name":"support.function.queryseparator.httpspec","match":"\\?"}]},"request":{"patterns":[{"begin":"^(?=ACL|BASELINE-CONTROL|BIND|CHECKIN|CHECKOUT|CONNECT|COPY|DELETE|GET|HEAD|LABEL|LINK|LOCK|MERGE|MKACTIVITY|MKCALENDAR|MKCOL|MKREDIRECTREF|MKWORKSPACE|MOVE|OPTIONS|ORDERPATCH|PATCH|POST|PRI|PROPFIND|PROPPATCH|PUT|REBIND|REPORT|SEARCH|TRACE|UNBIND|UNCHECKOUT|UNLINK|UNLOCK|UPDATE|UPDATEREDIRECTREF|VERSION-CONTROL\n)","end":"^(?=\\d\\d\\d)","patterns":[{"include":"#requestline"},{"include":"#header"},{"include":"#jsonblock"}]}]},"requestline":{"patterns":[{"include":"#methodlist"},{"include":"#uri"}]},"response":{"patterns":[{"include":"#statusline"},{"include":"#header"},{"include":"#jsonblock"}]},"statusline":{"patterns":[{"match":"^(\\d\\d\\d)\\s(.*)$","captures":{"0":{"name":"constant.language.statustext.httpspec"}}}]},"uri":{"patterns":[{"include":"#uripath"},{"include":"#multiplex"},{"include":"#questionmark"},{"include":"#uriquery"}]},"uripart":{"patterns":[{"match":"([a-bA-B0-9\\-_/]+)"}]},"uripath":{"patterns":[{"name":"support.function.httpspec","begin":"(?:\\s)\\/","end":"(?:$)","patterns":[{"include":"#uripart"},{"include":"#multiplex"}]}]},"uriquery":{"patterns":[{"include":"#namevaluepair"},{"include":"#ampersand"}]},"uriqueryname":{"patterns":[{"name":"support.function.uriqueryname.httpspec","match":"(?\u003c=[?\u0026])([^=\u0026])+"}]},"uriqueryvalue":{"patterns":[{"name":"support.function.uriqueryvalue.httpspec","match":"(?\u003c=\\=)([^=\u0026]+)"}]}}}