<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]--> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="generator" content="Asciidoctor 1.5.2"> <meta name="author" content="Tristan Juricek"> <title>Perforce Web Services Guide: 2015.1 Alpha</title> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400"> <style> /* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */ /* Remove the comments around the @import statement below when using this as a custom stylesheet */ /*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400";*/ article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block} audio,canvas,video{display:inline-block} audio:not([controls]){display:none;height:0} [hidden],template{display:none} script{display:none!important} html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%} body{margin:0} a{background:transparent} a:focus{outline:thin dotted} a:active,a:hover{outline:0} h1{font-size:2em;margin:.67em 0} abbr[title]{border-bottom:1px dotted} b,strong{font-weight:bold} dfn{font-style:italic} hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0} mark{background:#ff0;color:#000} code,kbd,pre,samp{font-family:monospace;font-size:1em} pre{white-space:pre-wrap} q{quotes:"\201C" "\201D" "\2018" "\2019"} small{font-size:80%} sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} sup{top:-.5em} sub{bottom:-.25em} img{border:0} svg:not(:root){overflow:hidden} figure{margin:0} fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em} legend{border:0;padding:0} button,input,select,textarea{font-family:inherit;font-size:100%;margin:0} button,input{line-height:normal} button,select{text-transform:none} button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer} button[disabled],html input[disabled]{cursor:default} input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0} input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box} input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none} button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0} textarea{overflow:auto;vertical-align:top} table{border-collapse:collapse;border-spacing:0} *,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box} html,body{font-size:100%} body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto} a:hover{cursor:pointer} img,object,embed{max-width:100%;height:auto} object,embed{height:100%} img{-ms-interpolation-mode:bicubic} #map_canvas img,#map_canvas embed,#map_canvas object,.map_canvas img,.map_canvas embed,.map_canvas object{max-width:none!important} .left{float:left!important} .right{float:right!important} .text-left{text-align:left!important} .text-right{text-align:right!important} .text-center{text-align:center!important} .text-justify{text-align:justify!important} .hide{display:none} .antialiased,body{-webkit-font-smoothing:antialiased} img{display:inline-block;vertical-align:middle} textarea{height:auto;min-height:50px} select{width:100%} p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6} .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em} div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr} a{color:#2156a5;text-decoration:underline;line-height:inherit} a:hover,a:focus{color:#1d4b8f} a img{border:none} p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility} p aside{font-size:.875em;line-height:1.35;font-style:italic} h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em} h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0} h1{font-size:2.125em} h2{font-size:1.6875em} h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em} h4,h5{font-size:1.125em} h6{font-size:1em} hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0} em,i{font-style:italic;line-height:inherit} strong,b{font-weight:bold;line-height:inherit} small{font-size:60%;line-height:inherit} code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)} ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit} ul,ol,ul.no-bullet,ol.no-bullet{margin-left:1.5em} ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em} ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit} ul.square{list-style-type:square} ul.circle{list-style-type:circle} ul.disc{list-style-type:disc} ul.no-bullet{list-style:none} ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0} dl dt{margin-bottom:.3125em;font-weight:bold} dl dd{margin-bottom:1.25em} abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help} abbr{text-transform:none} blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd} blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)} blockquote cite:before{content:"\2014 \0020"} blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)} blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)} @media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2} h1{font-size:2.75em} h2{font-size:2.3125em} h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em} h4{font-size:1.4375em}}table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede} table thead,table tfoot{background:#f7f8f7;font-weight:bold} table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left} table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)} table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7} table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6} h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em} h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400} .clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table} .clearfix:after,.float-group:after{clear:both} *:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed} pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed} .keyseq{color:rgba(51,51,51,.8)} kbd{display:inline-block;color:rgba(0,0,0,.8);font-size:.75em;line-height:1.4;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:-.15em .15em 0 .15em;padding:.2em .6em .2em .5em;vertical-align:middle;white-space:nowrap} .keyseq kbd:first-child{margin-left:0} .keyseq kbd:last-child{margin-right:0} .menuseq,.menu{color:rgba(0,0,0,.8)} b.button:before,b.button:after{position:relative;top:-1px;font-weight:400} b.button:before{content:"[";padding:0 3px 0 2px} b.button:after{content:"]";padding:0 2px 0 3px} p a>code:hover{color:rgba(0,0,0,.9)} #header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em} #header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table} #header:after,#content:after,#footnotes:after,#footer:after{clear:both} #content{margin-top:1.25em} #content:before{content:none} #header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0} #header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8} #header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px} #header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap} #header .details span:first-child{margin-left:-.125em} #header .details span.email a{color:rgba(0,0,0,.85)} #header .details br{display:none} #header .details br+span:before{content:"\00a0\2013\00a0"} #header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)} #header .details br+span#revremark:before{content:"\00a0|\00a0"} #header #revnumber{text-transform:capitalize} #header #revnumber:after{content:"\00a0"} #content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem} #toc{border-bottom:1px solid #efefed;padding-bottom:.5em} #toc>ul{margin-left:.125em} #toc ul.sectlevel0>li>a{font-style:italic} #toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0} #toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none} #toc a{text-decoration:none} #toc a:active{text-decoration:underline} #toctitle{color:#7a2518;font-size:1.2em} @media only screen and (min-width:768px){#toctitle{font-size:1.375em} body.toc2{padding-left:15em;padding-right:0} #toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto} #toc.toc2 #toctitle{margin-top:0;font-size:1.2em} #toc.toc2>ul{font-size:.9em;margin-bottom:0} #toc.toc2 ul ul{margin-left:0;padding-left:1em} #toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em} body.toc2.toc-right{padding-left:0;padding-right:15em} body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}}@media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0} #toc.toc2{width:20em} #toc.toc2 #toctitle{font-size:1.375em} #toc.toc2>ul{font-size:.95em} #toc.toc2 ul ul{padding-left:1.25em} body.toc2.toc-right{padding-left:0;padding-right:20em}}#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} #content #toc>:first-child{margin-top:0} #content #toc>:last-child{margin-bottom:0} #footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em} #footer-text{color:rgba(255,255,255,.8);line-height:1.44} .sect1{padding-bottom:.625em} @media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}}.sect1+.sect1{border-top:1px solid #efefed} #content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400} #content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em} #content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible} #content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none} #content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221} .audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em} .admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic} table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0} .paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)} table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit} .admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%} .admonitionblock>table td.icon{text-align:center;width:80px} .admonitionblock>table td.icon img{max-width:none} .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase} .admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)} .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0} .exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px} .exampleblock>.content>:first-child{margin-top:0} .exampleblock>.content>:last-child{margin-bottom:0} .sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} .sidebarblock>:first-child{margin-top:0} .sidebarblock>:last-child{margin-bottom:0} .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center} .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0} .literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8} .sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1} .literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em} .literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal} @media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}@media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)} .listingblock pre.highlightjs{padding:0} .listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px} .listingblock pre.prettyprint{border-width:0} .listingblock>.content{position:relative} .listingblock code[data-lang]:before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999} .listingblock:hover code[data-lang]:before{display:block} .listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999} .listingblock.terminal pre .command:not([data-prompt]):before{content:"$"} table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none} table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0} table.pyhltable td.code{padding-left:.75em;padding-right:0} pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8} pre.pygments .lineno{display:inline-block;margin-right:.25em} table.pyhltable .linenodiv{background:none!important;padding-right:0!important} .quoteblock{margin:0 1em 1.25em 1.5em;display:table} .quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em} .quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify} .quoteblock blockquote{margin:0;padding:0;border:0} .quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)} .quoteblock blockquote>.paragraph:last-child p{margin-bottom:0} .quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right} .quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)} .quoteblock .quoteblock blockquote{padding:0 0 0 .75em} .quoteblock .quoteblock blockquote:before{display:none} .verseblock{margin:0 1em 1.25em 1em} .verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility} .verseblock pre strong{font-weight:400} .verseblock .attribution{margin-top:1.25rem;margin-left:.5ex} .quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic} .quoteblock .attribution br,.verseblock .attribution br{display:none} .quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.05em;color:rgba(0,0,0,.6)} .quoteblock.abstract{margin:0 0 1.25em 0;display:block} .quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0} .quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none} table.tableblock{max-width:100%;border-collapse:separate} table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0} table.spread{width:100%} table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede} table.grid-all th.tableblock,table.grid-all td.tableblock{border-width:0 1px 1px 0} table.grid-all tfoot>tr>th.tableblock,table.grid-all tfoot>tr>td.tableblock{border-width:1px 1px 0 0} table.grid-cols th.tableblock,table.grid-cols td.tableblock{border-width:0 1px 0 0} table.grid-all *>tr>.tableblock:last-child,table.grid-cols *>tr>.tableblock:last-child{border-right-width:0} table.grid-rows th.tableblock,table.grid-rows td.tableblock{border-width:0 0 1px 0} table.grid-all tbody>tr:last-child>th.tableblock,table.grid-all tbody>tr:last-child>td.tableblock,table.grid-all thead:last-child>tr>th.tableblock,table.grid-rows tbody>tr:last-child>th.tableblock,table.grid-rows tbody>tr:last-child>td.tableblock,table.grid-rows thead:last-child>tr>th.tableblock{border-bottom-width:0} table.grid-rows tfoot>tr>th.tableblock,table.grid-rows tfoot>tr>td.tableblock{border-width:1px 0 0 0} table.frame-all{border-width:1px} table.frame-sides{border-width:0 1px} table.frame-topbot{border-width:1px 0} th.halign-left,td.halign-left{text-align:left} th.halign-right,td.halign-right{text-align:right} th.halign-center,td.halign-center{text-align:center} th.valign-top,td.valign-top{vertical-align:top} th.valign-bottom,td.valign-bottom{vertical-align:bottom} th.valign-middle,td.valign-middle{vertical-align:middle} table thead th,table tfoot th{font-weight:bold} tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7} tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold} p.tableblock>code:only-child{background:none;padding:0} p.tableblock{font-size:1em} td>div.verse{white-space:pre} ol{margin-left:1.75em} ul li ol{margin-left:1.5em} dl dd{margin-left:1.125em} dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0} ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em} ul.unstyled,ol.unnumbered,ul.checklist,ul.none{list-style-type:none} ul.unstyled,ol.unnumbered,ul.checklist{margin-left:.625em} ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1em;font-size:.85em} ul.checklist li>p:first-child>input[type="checkbox"]:first-child{width:1em;position:relative;top:1px} ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden} ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block} ul.inline>li>*{display:block} .unstyled dl dt{font-weight:400;font-style:normal} ol.arabic{list-style-type:decimal} ol.decimal{list-style-type:decimal-leading-zero} ol.loweralpha{list-style-type:lower-alpha} ol.upperalpha{list-style-type:upper-alpha} ol.lowerroman{list-style-type:lower-roman} ol.upperroman{list-style-type:upper-roman} ol.lowergreek{list-style-type:lower-greek} .hdlist>table,.colist>table{border:0;background:none} .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none} td.hdlist1{padding-right:.75em;font-weight:bold} td.hdlist1,td.hdlist2{vertical-align:top} .literalblock+.colist,.listingblock+.colist{margin-top:-.5em} .colist>table tr>td:first-of-type{padding:0 .75em;line-height:1} .colist>table tr>td:last-of-type{padding:.25em 0} .thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd} .imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0} .imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em} .imageblock>.title{margin-bottom:0} .imageblock.thumb,.imageblock.th{border-width:6px} .imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em} .image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0} .image.left{margin-right:.625em} .image.right{margin-left:.625em} a.image{text-decoration:none} span.footnote,span.footnoteref{vertical-align:super;font-size:.875em} span.footnote a,span.footnoteref a{text-decoration:none} span.footnote a:active,span.footnoteref a:active{text-decoration:underline} #footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em} #footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0} #footnotes .footnote{padding:0 .375em;line-height:1.3;font-size:.875em;margin-left:1.2em;text-indent:-1.2em;margin-bottom:.2em} #footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none} #footnotes .footnote:last-of-type{margin-bottom:0} #content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0} .gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0} .gist .file-data>table td.line-data{width:99%} div.unbreakable{page-break-inside:avoid} .big{font-size:larger} .small{font-size:smaller} .underline{text-decoration:underline} .overline{text-decoration:overline} .line-through{text-decoration:line-through} .aqua{color:#00bfbf} .aqua-background{background-color:#00fafa} .black{color:#000} .black-background{background-color:#000} .blue{color:#0000bf} .blue-background{background-color:#0000fa} .fuchsia{color:#bf00bf} .fuchsia-background{background-color:#fa00fa} .gray{color:#606060} .gray-background{background-color:#7d7d7d} .green{color:#006000} .green-background{background-color:#007d00} .lime{color:#00bf00} .lime-background{background-color:#00fa00} .maroon{color:#600000} .maroon-background{background-color:#7d0000} .navy{color:#000060} .navy-background{background-color:#00007d} .olive{color:#606000} .olive-background{background-color:#7d7d00} .purple{color:#600060} .purple-background{background-color:#7d007d} .red{color:#bf0000} .red-background{background-color:#fa0000} .silver{color:#909090} .silver-background{background-color:#bcbcbc} .teal{color:#006060} .teal-background{background-color:#007d7d} .white{color:#bfbfbf} .white-background{background-color:#fafafa} .yellow{color:#bfbf00} .yellow-background{background-color:#fafa00} span.icon>.fa{cursor:default} .admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} .admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c} .admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111} .admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900} .admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400} .admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000} .conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold} .conum[data-value] *{color:#fff!important} .conum[data-value]+b{display:none} .conum[data-value]:after{content:attr(data-value)} pre .conum[data-value]{position:relative;top:-.125em} b.conum *{color:inherit!important} .conum:not([data-value]):empty{display:none} h1,h2{letter-spacing:-.01em} dt,th.tableblock,td.content{text-rendering:optimizeLegibility} p,td.content{letter-spacing:-.01em} p strong,td.content strong{letter-spacing:-.005em} p,blockquote,dt,td.content{font-size:1.0625rem} p{margin-bottom:1.25rem} .sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em} .exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc} .print-only{display:none!important} @media print{@page{margin:1.25cm .75cm} *{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important} a{color:inherit!important;text-decoration:underline!important} a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important} a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em} abbr[title]:after{content:" (" attr(title) ")"} pre,blockquote,tr,img{page-break-inside:avoid} thead{display:table-header-group} img{max-width:100%!important} p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3} h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid} #toc,.sidebarblock,.exampleblock>.content{background:none!important} #toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important} .sect1{padding-bottom:0!important} .sect1+.sect1{border:0!important} #header>h1:first-child{margin-top:1.25rem} body.book #header{text-align:center} body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0} body.book #header .details{border:0!important;display:block;padding:0!important} body.book #header .details span:first-child{margin-left:0!important} body.book #header .details br{display:block} body.book #header .details br+span:before{content:none!important} body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important} body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always} .listingblock code[data-lang]:before{display:block} #footer{background:none!important;padding:0 .9375em} #footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em} .hide-on-print{display:none!important} .print-only{display:block!important} .hide-for-print{display:none!important} .show-for-print{display:inherit!important}} </style> </head> <body class="article toc2 toc-right"> <div id="header"> <h1>Perforce Web Services Guide: 2015.1 Alpha</h1> <div class="details"> <span id="author" class="author">Tristan Juricek</span><br> <span id="email" class="email"><a href="mailto:tjuricek@perforce.com">tjuricek@perforce.com</a></span><br> <span id="revnumber">version 2015.1.alpha,</span> <span id="revdate">May 2015</span> </div> <div id="toc" class="toc2"> <div id="toctitle">Table of Contents</div> <ul class="sectlevel1"> <li><a href="#_about_this_manual">About This Manual</a> <ul class="sectlevel2"> <li><a href="#_please_give_us_feedback">Please give us feedback</a></li> </ul> </li> <li><a href="#_overview">Overview</a> <ul class="sectlevel2"> <li><a href="#_knowledge_required">Knowledge Required</a></li> <li><a href="#_release_compatibility_of_the_api">Release compatibility of the API</a></li> <li><a href="#_architecture_of_the_api">Architecture of the API</a></li> </ul> </li> <li><a href="#_deploying_helix_web_services">Deploying Helix Web Services</a> <ul class="sectlevel2"> <li><a href="#_deploying_from_a_source_tarball">Deploying from a source tarball</a></li> <li><a href="#_deploying_from_packages">Deploying from Packages</a></li> <li><a href="#_using_code_hws_console_code_to_verify_your_deployment">Using <code>hws_console</code> to verify your deployment</a></li> <li><a href="#_uninstalling_helix_web_services">Uninstalling Helix Web Services</a></li> </ul> </li> <li><a href="#system_configuration">Configuration</a> <ul class="sectlevel2"> <li><a href="#deployment_configuration">Deployment Configuration</a></li> <li><a href="#_available_application_settings">Available Application Settings</a></li> </ul> </li> <li><a href="#_client_application_development">Client Application Development</a> <ul class="sectlevel2"> <li><a href="#authentication">Authentication</a></li> <li><a href="#per_request_configuration">Per-Request Configuration</a></li> <li><a href="#error_responses">Error Conventions</a></li> <li><a href="#ruby_client_sdk_overview">Ruby Client SDK</a></li> </ul> </li> <li><a href="#_http_protocol_reference">HTTP Protocol Reference</a> <ul class="sectlevel2"> <li><a href="#_configuration_of_available_services">Configuration of Available Services</a></li> <li><a href="#_helix_git_fusion_repositories">Helix Git Fusion Repositories</a></li> <li><a href="#_helix_git_fusion_user_keys">Helix Git Fusion User Keys</a></li> <li><a href="#_helix_sync_changes">Helix Sync Changes</a></li> <li><a href="#_helix_sync_clients">Helix Sync Clients</a></li> <li><a href="#_helix_versioning_engine_branches">Helix Versioning Engine Branches</a></li> <li><a href="#_helix_versioning_engine_changes">Helix Versioning Engine Changes</a></li> <li><a href="#_helix_versioning_engine_clients">Helix Versioning Engine Clients</a></li> <li><a href="#_helix_versioning_engine_commands">Helix Versioning Engine Commands</a></li> <li><a href="#_helix_versioning_engine_counters">Helix Versioning Engine Counters</a></li> <li><a href="#_helix_versioning_engine_depots">Helix Versioning Engine Depots</a></li> <li><a href="#_helix_versioning_engine_files">Helix Versioning Engine Files</a></li> <li><a href="#_helix_versioning_engine_groups">Helix Versioning Engine Groups</a></li> <li><a href="#_helix_versioning_engine_jobs">Helix Versioning Engine Jobs</a></li> <li><a href="#_helix_versioning_engine_labels">Helix Versioning Engine Labels</a></li> <li><a href="#_helix_versioning_engine_login">Helix Versioning Engine Login</a></li> <li><a href="#_helix_versioning_engine_protections">Helix Versioning Engine Protections</a></li> <li><a href="#_helix_versioning_engine_servers">Helix Versioning Engine Servers</a></li> <li><a href="#_helix_versioning_engine_streams">Helix Versioning Engine Streams</a></li> <li><a href="#_helix_versioning_engine_triggers">Helix Versioning Engine Triggers</a></li> <li><a href="#_helix_versioning_engine_users">Helix Versioning Engine Users</a></li> <li><a href="#_project_methods">Project Methods</a></li> </ul> </li> <li><a href="#_client_sdk_reference">Client SDK Reference</a></li> <li><a href="#_server_programming">Server Programming</a> <ul class="sectlevel2"> <li><a href="#_including_new_rack_middleware">Including New Rack Middleware</a></li> <li><a href="#_registering_configuration_variables">Registering Configuration Variables</a></li> <li><a href="#project_extensions">Adding Project Extensions</a></li> </ul> </li> <li><a href="#_server_api_reference">Server API Reference</a></li> <li><a href="#_development_guide">Development Guide</a> <ul class="sectlevel2"> <li><a href="#_basic_development_set_up">Basic Development Set Up</a></li> </ul> </li> <li><a href="#_appendices">Appendices</a> <ul class="sectlevel2"> <li><a href="#appendix_project_json">Appendix A: Project JSON</a></li> <li><a href="#appendix_hve_project_json">Appendix B: Helix Versioning Engine Project JSON</a></li> <li><a href="#appendix_helix_cloud">Appendix C: Helix Cloud</a></li> <li><a href="#appendix_config_services">Appendix D: Service Configuration JSON</a></li> </ul> </li> </ul> </div> </div> <div id="content"> <div class="sect1"> <h2 id="_about_this_manual"><a class="link" href="#_about_this_manual">About This Manual</a></h2> <div class="sectionbody"> <div class="paragraph"> <p>This guide covers administering and developing against the Helix Web Services. Helix Web Services provide common services and APIs that interact with the Helix Versioning Engine.</p> </div> <div class="paragraph"> <p>A Helix Web Services server is a web server, and it’s APIs are fundamentally based on the HTTP protocol. Not all aspects of the Helix Versioning Engine are provided by Helix Web Services, vice versa. Some services provided by Helix Web Services are not available in the Helix Versioning Engine.</p> </div> <div class="sect2"> <h3 id="_please_give_us_feedback"><a class="link" href="#_please_give_us_feedback">Please give us feedback</a></h3> <div class="paragraph"> <p>If you have any feedback for us, or detect any errors in this guide, please email details to <a href="mailto:manual@perforce.com">manual@perforce.com</a>.</p> </div> </div> </div> </div> <div class="sect1"> <h2 id="_overview"><a class="link" href="#_overview">Overview</a></h2> <div class="sectionbody"> <div class="sect2"> <h3 id="_knowledge_required"><a class="link" href="#_knowledge_required">Knowledge Required</a></h3> <div class="paragraph"> <p>For deployment and configuration tasks, this guide assumes that you are experienced with administering web applications. You should be conceptually comfortable with Nginx and Unicorn. It is not necessary to have expert knowledge of these systems, but you should understand what their roles are without further clarification. If you require more knowledge, please consult online guides available from each of the primary sites:</p> </div> <div class="ulist"> <ul> <li> <p>Nginx: <a href="http://nginx.org/" class="bare">http://nginx.org/</a></p> </li> <li> <p>Unicorn: <a href="http://unicorn.bogomips.org/" class="bare">http://unicorn.bogomips.org/</a></p> </li> </ul> </div> <div class="paragraph"> <p>Additionally, while this guide interfaces with the Helix Versioning Engine, we assume you are familiar with it. For more information about the Helix Versioning Engine, please become familiar with the following online guides:</p> </div> <div class="ulist"> <ul> <li> <p>Product overview: <a href="http://www.perforce.com/versioning-engine" class="bare">http://www.perforce.com/versioning-engine</a></p> </li> <li> <p>P4 Command Reference: <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/index.html" class="bare">http://www.perforce.com/perforce/doc.current/manuals/cmdref/index.html</a></p> </li> <li> <p>Admin fundamentals: <a href="http://www.perforce.com/perforce/doc.current/manuals/p4sag/index.html" class="bare">http://www.perforce.com/perforce/doc.current/manuals/p4sag/index.html</a></p> </li> </ul> </div> <div class="paragraph"> <p>For client development tasks, this guide assumes you are comfortable with the HTTP protocol. While it is not required to know Ruby, we provide a client SDK for Ruby, which may be easier to understand initially. If you do not use our Ruby client SDK, you will need to create an SDK for your platform, likely combined with a JSON parser.</p> </div> </div> <div class="sect2"> <h3 id="_release_compatibility_of_the_api"><a class="link" href="#_release_compatibility_of_the_api">Release compatibility of the API</a></h3> <div class="paragraph"> <p>Helix Web Services built and tested against a corresponding major release of the Helix Versioning Engine. For example, the '2015.1' release of Helix Web Services is validated using the '2015.1' of the Helix Versioning Engine. Using Helix Web Services against a non-corresponding Helix Versioning Engine instance will likely work, with some caveats.</p> </div> <div class="paragraph"> <p>Each major version of the Helix Versioning Engine can contain additional fields to the data returned by various methods. You will likely need to take care to ensure that your application does not assume a strict set of fields. Occasionally, there are subtle behavioral differences that may also require subtle shifts in logic. In the end, you will need to validate your code against the Helix Versioning Engine version you are using in production.</p> </div> </div> <div class="sect2"> <h3 id="_architecture_of_the_api"><a class="link" href="#_architecture_of_the_api">Architecture of the API</a></h3> <div class="paragraph"> <p>Helix Web Services is a Ruby web application, that is intended to sit behind a reverse proxy server, such as nginx. The reverse proxy server should handle the configuration of SSL for the web services, and can host other web applications from the Helix suite. Helix Web Services currently deploys into a single unicorn instance, on Linux machines.</p> </div> <div class="paragraph"> <p>Each Helix Web Services instance should not maintain state. You should be able to launch more than one Helix Web Services instance, and configure your reverse proxy to handle load balancing. You can also architect your system using services such as haproxy for load balancing. Using haproxy and nginx is beyond the scope of this documentation guide; we assume you are an experienced systems administrator when it comes to clustered web application deployment.</p> </div> </div> </div> </div> <div class="sect1"> <h2 id="_deploying_helix_web_services"><a class="link" href="#_deploying_helix_web_services">Deploying Helix Web Services</a></h2> <div class="sectionbody"> <div class="paragraph"> <p>Helix Web Services can be deployed from a source tarball distribution or from installed packages. Starting up web services from a source tarball is similar to working with code checked out from our source distribution.</p> </div> <div class="paragraph"> <p>To be clear, Helix Web Services will be set up to run a single application server instance. This application server will run on an unprivileged port, like 9000. It’s expected that Helix Web Services would be a part of a greater ecosystem of web applications, likely proxied by a web server such as Nginx. Our package installation includes a post-install configuration script that configures other services on the local machine to make it easy.</p> </div> <div class="sect2"> <h3 id="_deploying_from_a_source_tarball"><a class="link" href="#_deploying_from_a_source_tarball">Deploying from a source tarball</a></h3> <div class="paragraph"> <p>The following steps will launch a Helix Web Services instance in the current terminal session. This is not intended for a production installation, but may be valid for evaluating the product or experimenting with customizing Helix Web Services from source.</p> </div> <div class="paragraph"> <p>Prerequisites to working with our source tarball:</p> </div> <div class="olist arabic"> <ol class="arabic"> <li> <p>Ruby 2.2</p> </li> <li> <p>An installed Perforce server</p> </li> </ol> </div> <div class="paragraph"> <p>Other Ruby variations will likely work, we do not test them.</p> </div> <div class="paragraph"> <p>Installation steps:</p> </div> <div class="olist arabic"> <ol class="arabic"> <li> <p>Run: <code>tar xzf helix-web-services-[VERSION].tar.gz</code></p> </li> <li> <p>Run: <code>cd helix-web-services-[VERSION]/helix_web_services</code></p> </li> <li> <p>Run: <code>bundle install</code></p> </li> <li> <p>Run: <code>bundle exec foreman start</code></p> </li> </ol> </div> </div> <div class="sect2"> <h3 id="_deploying_from_packages"><a class="link" href="#_deploying_from_packages">Deploying from Packages</a></h3> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">Note</div> </td> <td class="content"> Right now you can only obtain unsigned pre-release packages from our workshop website. See the project page at: <a href="https://swarm.workshop.perforce.com/projects/perforce-software-helix-web-services/" class="bare">https://swarm.workshop.perforce.com/projects/perforce-software-helix-web-services/</a> </td> </tr> </table> </div> <div class="paragraph"> <p>Install the package using the appropriate platform tool:</p> </div> <div class="ulist"> <ul> <li> <p>On Debian or Ubuntu systems, run <code>dpkg -i helix-web-services-[VERSION].deb</code></p> </li> <li> <p>On Redhat or CentOS systems, run <code>rpm -i helix-web-services-[VERSION].rpm</code></p> </li> </ul> </div> <div class="paragraph"> <p>After installation, run the configuration script:</p> </div> <div class="listingblock"> <div class="content"> <pre>sudo /opt/perforce/helix-web-services/bin/hws_configure</pre> </div> </div> <div class="paragraph"> <p>See <a href="#deployment_configuration">Deployment Configuration</a> for more details on post-install configuration.</p> </div> <div class="paragraph"> <p>This will have prepared both <code>helix_web_services</code> and <code>nginx</code> startup scripts. You should make any adjustments to your system configuration if you need to, and then startup the services.</p> </div> <div class="paragraph"> <p>On Ubuntu, this would take the form:</p> </div> <div class="listingblock"> <div class="content"> <pre>sudo service helix_web_services start sudo service nginx start</pre> </div> </div> <div class="paragraph"> <p>If this machine already has an existing nginx or perforce server configuration, you will have to manually configure /etc/nginx/nginx.conf or adjust the system configuration for Helix Web Services. See <a href="#system_configuration">Configuration</a>.</p> </div> </div> <div class="sect2"> <h3 id="_using_code_hws_console_code_to_verify_your_deployment"><a class="link" href="#_using_code_hws_console_code_to_verify_your_deployment">Using <code>hws_console</code> to verify your deployment</a></h3> <div class="paragraph"> <p>After installation, you may want to quickly check that your configuration is working as you think it should. You can use the <code>hws_console</code> application to quickly run a few commands in a Ruby console. A default method, <code>client_for(user, password)</code> is available to let you sign in and start running commands.</p> </div> <div class="paragraph"> <p>First, from your login shell, run:</p> </div> <div class="listingblock"> <div class="content"> <pre>/opt/perforce/helix-web-services/bin/hws_console</pre> </div> </div> <div class="paragraph"> <p>You should be dropped into a Pry session, that will look like the following:</p> </div> <div class="listingblock"> <div class="content"> <pre>From: /opt/perforce/helix-web-services/embedded/lib/ruby/gems/2.2.0/gems/helix_web_services-2015.1.0.pre1/bin/hws_console @ line 18 : 13: ssl: {verify: false} 14: ) 15: end 16: 17: # Drop into the console => 18: binding.pry [1] pry(main)></pre> </div> </div> <div class="paragraph"> <p>At the prompt, <code>[1] pry(main)></code>, you can create a client and interact with it.</p> </div> <div class="paragraph"> <p>Say you’re using the default configuration, which creates an empty Perforce server with the user <code>super</code> with password <code>superuser1A!</code>. You can run the following commands:</p> </div> <div class="listingblock"> <div class="content"> <pre>c = client_for('super', 'superuser1A!') c.depots</pre> </div> </div> <div class="paragraph"> <p>While there will be a lot of console debugging output, at the end, you’ll see the list of depots in your system.</p> </div> <div class="paragraph"> <p>At this point, <code>c</code> is an instance of the <code>HelixWebServicesClient</code>. See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html">the Ruby API documentation</a> for more details on what you can run.</p> </div> </div> <div class="sect2"> <h3 id="_uninstalling_helix_web_services"><a class="link" href="#_uninstalling_helix_web_services">Uninstalling Helix Web Services</a></h3> <div class="paragraph"> <p>Completely removing Helix Web Services from the system boils down to a few steps:</p> </div> <div class="ulist"> <ul> <li> <p>Remove the <code>helixwebservices</code> account and group</p> </li> <li> <p>Remove the Upstart configuration at <code>/etc/init/helix_web_services.conf</code></p> </li> <li> <p>Remove temporary data and logging directories: <code>/var/lib/perforce/helix_web_services</code>, <code>/var/log/perforce/helix_web_services</code></p> </li> <li> <p>Uninstall or reconfigure nginx</p> </li> <li> <p>Uninstall or reconfigure perforce-server</p> </li> <li> <p>Run the system package uninstaller, e.g., <code>apt-get remove helix-web-services</code>, <code>dpkg -r helix-web-services</code>, etc.</p> </li> </ul> </div> </div> </div> </div> <div class="sect1"> <h2 id="system_configuration"><a class="link" href="#system_configuration">Configuration</a></h2> <div class="sectionbody"> <div class="sect2"> <h3 id="deployment_configuration"><a class="link" href="#deployment_configuration">Deployment Configuration</a></h3> <div class="paragraph"> <p>There are a few main tasks to perform after just running the installer to get your system fully operational. The script <code>/opt/perforce/helix-web-services/bin/hws_configure</code> can be run on most "clean" operating systems to perform all of these steps. Not all of these steps will be performed, necessarily. For example, if you already have nginx running, we will not modify your system configuration. You will have to configure a reverse proxy to the unicorn server running at port 9000.</p> </div> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-left valign-top">Default set by <code>hws_configure</code></th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Notes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Establish the user account for running Helix Web Services</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">helixwebservices</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Will not be created if already exists</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Create directory for temporary data, assign to user account</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>/var/lib/perforce/helix_web_services</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Will not be created if already exists</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Create directory for logging data, assign to user account</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>/var/log/perforce/helix_web_services</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Will not be created if already exists</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Link upstart configuration</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>/etc/init/helix_web_services.conf</code> is linked from <code>/opt/perforce/helix-web-services/etc/init/helix_web_services.conf</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Install and configure nginx</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">nginx is installed from system packages, a self-signed key is created or installed, and the default /etc/nginx/nginx.conf is setup as a reverse proxy to Unicorn running at port 9000</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If nginx is already installed, <strong>none of these steps</strong> will be performed.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Install and configure a Helix Versioning Engine for evaluation</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Installs the <code>perforce-server</code> system package, and then configures a <code>helix-evaluation</code> instance to run at port 1666.</p></td> </tr> </tbody> </table> <div class="paragraph"> <p>For details of the steps taken, review the script code online at:</p> </div> <div class="paragraph"> <p><a href="https://swarm.workshop.perforce.com/projects/perforce-software-helix-web-services/files/main/source/helix_web_services/bin/hws_configure" class="bare">https://swarm.workshop.perforce.com/projects/perforce-software-helix-web-services/files/main/source/helix_web_services/bin/hws_configure</a></p> </div> </div> <div class="sect2"> <h3 id="_available_application_settings"><a class="link" href="#_available_application_settings">Available Application Settings</a></h3> <div class="paragraph"> <p>System default settings for Helix Web Services can be set by creating a YAML file at <code>/etc/perforce/helix_web_services.conf</code>. If you’re unfamiliar with YAML, you simply use the variables below in simple key-value pairs. Pay attention, however, to the type of the variable. In many cases we use strings when you might have thought it were a number.</p> </div> <div class="paragraph"> <p>For example:</p> </div> <div class="paragraph"> <p>/etc/perforce/helix_web_services.conf</p> </div> <div class="listingblock"> <div class="content"> <pre>P4PORT: 'perforce.mycompany.com:1999'</pre> </div> </div> <div class="paragraph"> <p>Many settings in Helix Web Services are overridable by HTTP headers on a per-request basis. The "Overridable" column in the table below means you can specify this header. If it is not available, you can <em>only</em> specify the configuration in the system config file. For more information on specifying the system header, see <a href="#per_request_configuration">Per-Request Configuration</a>.</p> </div> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 20%;"> <col style="width: 20%;"> <col style="width: 20%;"> <col style="width: 20%;"> <col style="width: 20%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Variable</th> <th class="tableblock halign-left valign-top">Type</th> <th class="tableblock halign-left valign-top">Overridable</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-left valign-top">Default</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>COMMAND_WHITELIST</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Array</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Allows access to run commands via <a href="#get_p4_vX_commands_command"><code>GET /p4/v[api]/commands/[command]</code></a> or <a href="#post_p4_vX_commands_command"><code>POST /p4/v[api]/commands/[command]</code></a>. Each element in the array is either the name of a command to allow, or an array of the command name and any required arguments.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>["info", ["files", "-m"]]</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>CUSTOM_SCRIPTS</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The local directory that will load up user defined Ruby scripts.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">/var/lib/perforce/helix_web_services/scripts</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>ENABLE_GIT_FUSION</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Switch to enable GitFusion endpoints.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>ENABLE_HELIX_CLOUD_AUTH</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Use Helix Cloud as the authentication source.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>ENABLE_HELIX_CLOUD_PROJECTS</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Enable Helix Cloud as a project source.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>HVE_PROJECTS_PATH</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The depot location in the Helix Versioning Engine that hosts all projects in that server.</p></td> <td class="tableblock halign-left valign-top"></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>P4HOST</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The hostname for the perforce server, e.g., <code>perforce.example.com</code></p></td> <td class="tableblock halign-left valign-top"></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>P4PORT</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The port number (or port and hostname combination) that indicates our Perforce connection</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>1666</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>P4CHARSET</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The charset value for P4 connections. Set to <code>none</code> if you are connecting to a non-unicode server.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>auto</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>P4PASSWD</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The user password to use for p4 connections. For many cases, like where the authentication source is a p4d server, this will default to the authentication token password.</p></td> <td class="tableblock halign-left valign-top"></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>SERVICE_CONFIGURATION</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Local file location that defines how services are to be configured.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>/etc/perforce/services.json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>TRUST_FINGERPRINTS</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Local file path that indicates a list of allowed SSL fingerprints.</p></td> <td class="tableblock halign-left valign-top"></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>WORKSPACE_DIR</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The local directory used for generating temporary Perforce Client Workspaces to do some basic operations.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>/var/lib/perforce/helix_web_services/workspaces</code></p></td> </tr> </tbody> </table> </div> </div> </div> <div class="sect1"> <h2 id="_client_application_development"><a class="link" href="#_client_application_development">Client Application Development</a></h2> <div class="sectionbody"> <div class="paragraph"> <p>In general, your client application is going to need to:</p> </div> <div class="ulist"> <ul> <li> <p>Know the Helix Versioning Engine topology</p> </li> <li> <p>Obtain login tokens for Helix Versioning Engine (using <a href="#post_auth_v1_login">[post_auth_v1_login]</a>)</p> </li> <li> <p>Call other methods on the system.</p> </li> </ul> </div> <div class="paragraph"> <p>Your application may use a single Helix Web Services instance to interact with multiple Helix Versioning Engines. In these cases, you will need to specify which versioning engine you are interacting with. In cases you are only using one Helix Versioning Engine, your application can then specify system wide settings. See <a href="#system_configuration">Configuration</a> for more details.</p> </div> <div class="paragraph"> <p>Working with Helix Web Services for a client generally involves making a single request at a time. Many of our core methods mimic the set of commands available to the <code>p4</code> application. But if you need to make a combined set of `p4 commands, ideally, there are extended "services" available, that handle that interaction. So, in general, your client application only needs to make one web service call at a time.</p> </div> <div class="sect2"> <h3 id="authentication"><a class="link" href="#authentication">Authentication</a></h3> <div class="paragraph"> <p>Almost every Helix Web Services method requires authentication. We support <a href="http://tools.ietf.org/html/rfc2617">HTTP Basic Authentication</a>, using the login and p4 ticket as credentials. Obtain a ticket via <a href="#post_auth_v1_login">[post_auth_v1_login]</a>.</p> </div> <div class="paragraph"> <p>Say the user <code>jdoe</code> has obtained the ticket <code>B984EF267963F434BB51C063EE86E8F9</code>. The corresponding HTTP header to add to each request would be:</p> </div> <div class="literalblock"> <div class="content"> <pre>Authorization: Basic amRvZTpCOTg0RUYyNjc5NjNGNDM0QkI1MUMwNjNFRTg2RThGOQ==</pre> </div> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">Note</div> </td> <td class="content"> You can easily generate the basic header on most Unix systems using the <code>echo</code> and <code>base64</code> commands. For example, to generate the header above, would be the command <code>echo -n jdoe:B984EF267963F434BB51C063EE86E8F9 | base64</code> </td> </tr> </table> </div> </div> <div class="sect2"> <h3 id="per_request_configuration"><a class="link" href="#per_request_configuration">Per-Request Configuration</a></h3> <div class="paragraph"> <p>Each request can specify HTTP headers to indicate override known settings the system.</p> </div> <div class="paragraph"> <p>Each custom header takes the format:</p> </div> <div class="literalblock"> <div class="content"> <pre>X-Perforce-Helix-Web-Services-[KEY]</pre> </div> </div> <div class="paragraph"> <p>See <a href="#system_configuration">Configuration</a> for the list of available keys.</p> </div> <div class="paragraph"> <p>For example, to change the <code>P4PORT</code> to be used, which identifies a separate Helix Versioning Engine, you’d set this header:</p> </div> <div class="literalblock"> <div class="content"> <pre>X-Perforce-Helix-Web-Services-P4PORT: helix-eu.mycompany.com:1666</pre> </div> </div> </div> <div class="sect2"> <h3 id="error_responses"><a class="link" href="#error_responses">Error Conventions</a></h3> <div class="paragraph"> <p>Upon success, methods of Helix Web Services return the 200 HTTP status code. If your authentication token is not valid, you will receive 403 error, which means you need to update your login token (using <a href="#post_auth_v1_login">[post_auth_v1_login]</a>).</p> </div> <div class="paragraph"> <p>401 errors will likely originate from the Helix Versioning Engine. In this case, we provide information to the client application via a JSON object. This object will contain three main properties:</p> </div> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Property</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>MessageCode</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">A numeric ID for the problem, typically defined by the Helix Versioning Engine. Should be the same value as <a href="http://www.perforce.com/perforce/r15.1/manuals/p4api/chapter.methods.html#error.getgeneric">Error::GetGeneric()</a>.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>MessageSeverity</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Mirrors the severity levels of <a href="http://www.perforce.com/perforce/r15.1/manuals/p4api/chapter.methods.html#error.getseverity">Error::GetSeverity()</a>. Generally going to be 3 or 4.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>MessageText</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Informational text that will likely not be localized appropriately for the user.</p></td> </tr> </tbody> </table> <div class="paragraph"> <p>When 500 errors happen, a serious problem has occurred, which may mean an important subsystem is compromised. Do not expect a response body. The problem will have to be investigated on the server side. Your client should not attempt further communication with Helix Web Services.</p> </div> </div> <div class="sect2"> <h3 id="ruby_client_sdk_overview"><a class="link" href="#ruby_client_sdk_overview">Ruby Client SDK</a></h3> <div class="paragraph"> <p>If your application is written in Ruby, you can use our provided Ruby client SDK. This SDK is currently available as part of the Helix Web Services source code, in the <code>helix_web_services_client</code> directory. Many Helix Web Services methods refer to this client SDK as the <em>Ruby API</em>.</p> </div> <div class="sect3"> <h4 id="_basic_ruby_client_sdk_usage"><a class="link" href="#_basic_ruby_client_sdk_usage">Basic Ruby Client SDK usage</a></h4> <div class="paragraph"> <p>There are really two primary methods:</p> </div> <div class="olist arabic"> <ol class="arabic"> <li> <p><a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#execute_method_with_body-instance_method"><code>execute_method_with_body</code></a></p> </li> <li> <p><a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#execute_method_no_body-instance_method"><code>execute_method_no_body</code></a></p> </li> </ol> </div> <div class="paragraph"> <p>Along with signing in via the constructore</p> </div> <div class="paragraph"> <p>These methods will generally parse the JSON response, and throw exceptions in case of any errors reported by the underlying server.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">require 'helix_web_services_client' client = HelixWebServicesClient.new({ :url => 'https://helix.example.com/hws', :user => 'jdoe', :password => 'joesupersecret' }) # Get starting list of depots depots = client.execute_method_no_body(:get, '/p4/v[api]/files') # Print depot names depots.each { |d| puts d['name'] } # Make a user client.execute_method_with_body(:post, '/p4/v[api]/users', nil, { 'User': 'new_user', 'FullName': 'Steve Austin', 'Email': 'saustin@example.com' })</code></pre> </div> </div> <div class="paragraph"> <p>You can additionally fetch the p4 ticket via the <code>client.ticket</code> property. If you store that, you can create a new <code>HelixWebServicesClient</code> specifying that via <code>ticket</code> instead of <code>password</code>.</p> </div> </div> <div class="sect3"> <h4 id="_models_in_the_ruby_client_sdk"><a class="link" href="#_models_in_the_ruby_client_sdk">Models in the Ruby Client SDK</a></h4> <div class="paragraph"> <p>Most HTTP methods that correspond to commands of the <code>p4</code> application, do not alter data from the Helix Versioning Engine. This can be inconvenient for application development. For example, dates are inconsistently represented, sometimes as strings, other times as timestamps. Keys that represent the same concept show up in different cases in the output data.</p> </div> <div class="paragraph"> <p>We’ve developed the <a href="helix_web_services_client_ruby/OpenModel.html"><code>OpenModel</code></a> class to help this out. Because a single version of Helix Web Services can interact with multiple instances Helix Versioning Engines at different versions, we do not want to restrict the data coming out of the server. The <code>OpenModel</code> class looks for case alternatives that might appear. It also provides a Ruby-like coding standard.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby"># Get starting list of depots depots = client.depots # The depot name # # If you call the singular method using our basic API this key is sometimes # referred to by `name`, sometimes as `Depot` depots.first.depot_or_name # In some listings, this is an integer represented as a string. # # Instead of a number, returns a Ruby Time object. # # Note that you should grab the offset value from the 'serverDate' field from # the `p4 info` command. depots.first.date_as_time(offset) # Can still make a user fairly easily just using Hashes client.create_user({ 'User' => 'new_user', 'FullName' => 'Steve Austin', 'Email' => 'saustin@example.com' }) # Updating specs should use upper case syntax. depot = client.depot('to_edit') depot.Description = "Updating the description" client.update_depot(depot)</code></pre> </div> </div> </div> <div class="sect3"> <h4 id="_obtaining_the_client_sdk"><a class="link" href="#_obtaining_the_client_sdk">Obtaining the Client SDK</a></h4> <div class="paragraph"> <p>In order to use the client SDK, you’d first need to obtain a copy of the Helix Web Services source from the Perforce workshop. Visit the workshop at <a href="https://swarm.workshop.perforce.com/" class="bare">https://swarm.workshop.perforce.com/</a>. On that site, you can sign up a new account. Documentation on this process is provided via that website.</p> </div> <div class="paragraph"> <p>Once you have an account, you can then retrieve code via the Helix Versioning Engine available at <code>workshop.perforce.com:1666</code>. The source code is available at <code>//guest/perforce_software/helix-web-services/main/…​</code> Use any Perforce client application, such as <code>p4</code> or P4V to connect and retrieve the source code.</p> </div> <div class="paragraph"> <p>Official releases of Helix Web Services may publish this client SDK to rubygems. Stay tuned!</p> </div> </div> </div> </div> </div> <div class="sect1"> <h2 id="_http_protocol_reference"><a class="link" href="#_http_protocol_reference">HTTP Protocol Reference</a></h2> <div class="sectionbody"> <div class="paragraph"> <p>Each section includes methods related to a particular topic or resource.</p> </div> <div class="paragraph"> <p>Configuration Methods</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_config_v1_services"><code>GET /config/v1/services</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Git Fusion Methods</p> </div> <div class="paragraph"> <p>Repositories</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_git_fusion_v1_repos"><code>GET /git-fusion/v1/repos</code></a></p> </li> <li> <p><a href="#get_git_fusion_v1_repos_repo"><code>GET /git-fusion/v1/repos/[repo]</code></a></p> </li> <li> <p><a href="#put_git_fusion_v1_repos_repo"><code>PUT /git-fusion/v1/repos/[repo]</code></a></p> </li> <li> <p><a href="#patch_git_fusion_v1_repos_repo"><code>PATCH /git-fusion/v1/repos/[repo]</code></a></p> </li> <li> <p><a href="#delete_git_fusion_v1_repos_repo"><code>DELETE /git-fusion/v1/repos/[repo]</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Keys</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_git_fusion_v1_user_keys"><code>GET /git-fusion/v1/users/[user]/keys</code></a></p> </li> <li> <p><a href="#put_git_fusion_v1_keys_user_key_name"><code>PUT /git-fusion/v1/users/[user]/keys/[key_name]</code></a></p> </li> <li> <p><a href="#delete_git_fusion_v1_delete_key"><code>DELETE /git-fusion/v1/users/[user]/keys/[key_name]</code></a></p> </li> <li> <p><a href="#delete_git_fusion_v1_user_keys"><code>DELETE /git-fusion/v1/users/[user]/keys</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Helix Sync Methods</p> </div> <div class="paragraph"> <p>Changes</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_helix_sync_v1_project_last_change"><code>GET /helix-sync/v1/[project]/last-change</code></a></p> </li> <li> <p><a href="#get_helix_sync_v1_project_pending"><code>GET /helix-sync/v1/[project]/pending</code></a></p> </li> <li> <p><a href="#delete_helix_sync_v1_project_pending"><code>DELETE /helix-sync/v1/:project_id/pending</code></a></p> </li> <li> <p><a href="#get_helix_sync_v1_project_preview"><code>GET /helix-sync/v1/[project]/preview</code></a></p> </li> <li> <p><a href="#post_helix_sync_v1_project_submit"><code>POST /helix-sync/v1/[project]/submit</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Clients</p> </div> <div class="ulist"> <ul> <li> <p><a href="#post_helix_sync_v1_project_clients_device"><code>POST /helix-sync/v1/[project]/clients/device</code></a></p> </li> <li> <p><a href="#delete_helix_sync_v1_project_clients_device_device"><code>DELETE /helix-sync/v1/[project]/clients/device/[device]</code></a></p> </li> <li> <p><a href="#post_helix_sync_v1_project_clients_shelf"><code>POST /helix-sync/v1/[project]/clients/shelf</code></a></p> </li> <li> <p><a href="#delete_helix_sync_v1_project_clients_shelf"><code>DELETE /helix-sync/v1/[project]/clients/shelf</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Helix Versioning Engine Methods</p> </div> <div class="paragraph"> <p>Branches</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_p4_vX_branches"><code>GET /p4/v[api]/branches</code></a></p> </li> <li> <p><a href="#post_p4_vX_branches"><code>POST /p4/v[api]/branches</code></a></p> </li> <li> <p><a href="#get_p4_vX_branches_branch"><code>GET /p4/v[api]/branches/[branch]</code></a></p> </li> <li> <p><a href="#patch_p4_vX_branches_branch"><code>PATCH /p4/v[api]/branches/[branch]</code></a></p> </li> <li> <p><a href="#delete_p4_vX_branches_branch"><code>DELETE /p4/v[api]/branches/[branch]</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Changes</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_p4_vX_changes"><code>GET /p4/v[api]/changes</code></a></p> </li> <li> <p><a href="#post_p4_vX_changes"><code>POST /p4/v[api]/changes</code></a></p> </li> <li> <p><a href="#get_p4_vX_changes_change"><code>GET /p4/v[api]/changes/[change]</code></a></p> </li> <li> <p><a href="#post_p4_vX_changes_change"><code>POST /p4/v[api]/changes/[change]</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Clients</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_p4_vX_clients"><code>GET /p4/v[api]/clients</code></a></p> </li> <li> <p><a href="#post_p4_vX_clients"><code>POST /p4/v[api]/clients</code></a></p> </li> <li> <p><a href="#get_p4_vX_clients_client"><code>GET /p4/v[api]/clients/[client]</code></a></p> </li> <li> <p><a href="#patch_p4_vX_clients_client"><code>PATCH /p4/v[api]/clients/[client]</code></a></p> </li> <li> <p><a href="#delete_p4_vX_clients_client"><code>DELETE /p4/v[api]/clients/[client]</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Commands</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_p4_vX_commands_command"><code>GET /p4/v[api]/commands/[command]</code></a></p> </li> <li> <p><a href="#post_p4_vX_commands_command"><code>POST /p4/v[api]/commands/[command]</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Counters</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_p4_vX_counters"><code>GET /p4/v[api]/counters</code></a></p> </li> <li> <p><a href="#get_p4_vX_counters_counter"><code>GET /p4/v[api]/counters/[counter]</code></a></p> </li> <li> <p><a href="#put_p4_vX_counters_counter"><code>PUT /p4/v[api]/counters/[counter]</code></a></p> </li> <li> <p><a href="#post_p4_vX_counters_counter"><code>POST /p4/v[api]/counters/[counter]/increment</code></a></p> </li> <li> <p><a href="#delete_p4_vX_counters_counter"><code>DELETE /p4/v[api]/counters/[counter]</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Depots</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_p4_vX_depots"><code>GET /p4/v[api]/depots</code></a></p> </li> <li> <p><a href="#post_p4_vX_depots"><code>POST /p4/v[api]/depots</code></a></p> </li> <li> <p><a href="#get_p4_vX_depots_depot"><code>GET /p4/v[api]/depots/[depot]</code></a></p> </li> <li> <p><a href="#patch_p4_vX_depots_depot"><code>PATCH /p4/v[api]/depots/[depot]</code></a></p> </li> <li> <p><a href="#delete_p4_vX_depots_depot"><code>DELETE /p4/v[api]/depots/[depot]</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Files</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_p4_vX_files"><code>GET /p4/v[api]/files/[path]</code></a></p> </li> <li> <p><a href="#patch_p4_vX_files"><code>PATCH /p4/v[api]/files/[path]</code></a></p> </li> <li> <p><a href="#delete_p4_vX_files"><code>DELETE /p4/v[api]/files/[path]</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Groups</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_p4_vX_groups"><code>GET /p4/v[api]/groups</code></a></p> </li> <li> <p><a href="#post_p4_vX_groups"><code>POST /p4/v[api]/groups</code></a></p> </li> <li> <p><a href="#get_p4_vX_groups_group"><code>GET /p4/v[api]/groups/[group]</code></a></p> </li> <li> <p><a href="#patch_p4_vX_groups_group"><code>PATCH /p4/v[api]/groups/[group]</code></a></p> </li> <li> <p><a href="#delete_p4_vX_groups_group"><code>DELETE /p4/v[api]/groups/[group]</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Jobs</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_p4_vX_jobs"><code>GET /p4/v[api]/jobs</code></a></p> </li> <li> <p><a href="#post_p4_vX_jobs"><code>POST /p4/v[api]/jobs</code></a></p> </li> <li> <p><a href="#get_p4_vX_jobs_job"><code>GET /p4/v[api]/jobs/[job]</code></a></p> </li> <li> <p><a href="#patch_p4_vX_jobs_job"><code>PATCH /p4/v[api]/jobs/[job]</code></a></p> </li> <li> <p><a href="#delete_p4_vX_jobs_job"><code>DELETE /p4/v[api]/jobs/[job]</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Labels</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_p4_vX_labels"><code>GET /p4/v[api]/labels</code></a></p> </li> <li> <p><a href="#post_p4_vX_labels"><code>POST /p4/v[api]/labels</code></a></p> </li> <li> <p><a href="#get_p4_vX_labels_label"><code>GET /p4/v[api]/labels/[label]</code></a></p> </li> <li> <p><a href="#patch_p4_vX_labels_label"><code>PATCH /p4/v[api]/labels/[label]</code></a></p> </li> <li> <p><a href="#delete_p4_vX_labels_label"><code>DELETE /p4/v[api]/labels/[label]</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Login</p> </div> <div class="ulist"> <ul> <li> <p><a href="#post_p4_vX_login"><code>POST /p4/v[api]/login</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Protections</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_p4_vX_protections"><code>GET /p4/v[api]/protections</code></a></p> </li> <li> <p><a href="#post_p4_vX_protections"><code>POST /p4/v[api]/protections</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Servers</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_p4_vX_servers"><code>GET /p4/v[api]/servers</code></a></p> </li> <li> <p><a href="#post_p4_vX_servers"><code>POST /p4/v[api]/servers</code></a></p> </li> <li> <p><a href="#get_p4_vX_servers_server"><code>GET /p4/v[api]/servers/[server]</code></a></p> </li> <li> <p><a href="#patch_p4_vX_servers_server"><code>PATCH /p4/v[api]/servers/[server]</code></a></p> </li> <li> <p><a href="#delete_p4_vX_servers_server"><code>DELETE /p4/v[api]/servers/[server]</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Streams</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_p4_vX_streams"><code>GET /p4/v[api]/streams</code></a></p> </li> <li> <p><a href="#post_p4_vX_streams"><code>POST /p4/v[api]/streams</code></a></p> </li> <li> <p><a href="#get_p4_vX_streams_stream"><code>GET /p4/v[api]/streams/[stream]</code></a></p> </li> <li> <p><a href="#patch_p4_vX_streams_stream"><code>PATCH /p4/v[api]/streams/[stream]</code></a></p> </li> <li> <p><a href="#delete_p4_vX_streams_stream"><code>DELETE /p4/v[api]/streams/[stream]</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Triggers</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_p4_vX_triggers"><code>GET /p4/v[api]/triggers</code></a></p> </li> <li> <p><a href="#post_p4_vX_triggers"><code>POST /p4/v[api]/triggers</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Users</p> </div> <div class="ulist"> <ul> <li> <p><a href="#get_p4_vX_users"><code>GET /p4/v[api]/users</code></a></p> </li> <li> <p><a href="#post_p4_vX_users"><code>POST /p4/v[api]/users</code></a></p> </li> <li> <p><a href="#get_p4_vX_users_user"><code>GET /p4/v[api]/users/[user]</code></a></p> </li> <li> <p><a href="#patch_p4_vX_users_user"><code>PATCH /p4/v[api]/users/[user]</code></a></p> </li> <li> <p><a href="#delete_p4_vX_users_user"><code>DELETE /p4/v[api]/users/[user]</code></a></p> </li> </ul> </div> <div class="paragraph"> <p>Project Services</p> </div> <div class="ulist"> <ul> <li> <p><a href="#post_projects_v1_login"><code>POST /projects/v1/login</code></a></p> </li> <li> <p><a href="#get_projects_v1"><code>GET /projects/v1</code></a></p> </li> <li> <p><a href="#get_projects_v1_project"><code>GET /projects/v1/[project]</code></a></p> </li> </ul> </div> <div class="sect2"> <h3 id="_configuration_of_available_services"><a class="link" href="#_configuration_of_available_services">Configuration of Available Services</a></h3> <div class="sect3"> <h4 id="get_config_v1_services"><a class="link" href="#get_config_v1_services"><code>GET /config/v1/services</code></a></h4> <div class="paragraph"> <p>Return the list of available Helix services. Each service represents an application-level subsystem in your Helix installation.</p> </div> <div class="paragraph"> <p>Returns the service configuration JSON as defined in <a href="#appendix_config_services">Appendix D: Service Configuration JSON</a>. See the appendix for details on the JSON format.</p> </div> <div class="sect4"> <h5 id="_request_headers"><a class="link" href="#_request_headers">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers"><a class="link" href="#_response_headers">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json"><a class="link" href="#_response_body_json">Response Body JSON</a></h5> <div class="paragraph"> <p>Returns the service configuration JSON as defined in <a href="#appendix_config_services">Appendix D: Service Configuration JSON</a>. See the appendix for details on the JSON format.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "type": "p4d", "uri": "p4://perforce.mycompany.com.1666" }, { "type": "git-fusion", "uri": "ssh://git-fusion.mycompany.com" } ]</code></pre> </div> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_git_fusion_repositories"><a class="link" href="#_helix_git_fusion_repositories">Helix Git Fusion Repositories</a></h3> <div class="sect3"> <h4 id="get_git_fusion_v1_repos"><a class="link" href="#get_git_fusion_v1_repos"><code>GET /git-fusion/v1/repos</code></a></h4> <div class="paragraph"> <p>Lists all configured repositories readable by the current user.</p> </div> <div class="sect4"> <h5 id="_request_headers_2"><a class="link" href="#_request_headers_2">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_2"><a class="link" href="#_response_headers_2">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_2"><a class="link" href="#_response_body_json_2">Response Body JSON</a></h5> <div class="paragraph"> <p>Response will consist of names of configured repositories as well as their id’s - which are Git Fusion encoded versions of the name strings.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "id": "namespace_0xS_project", "name": "namespace/project", }, { "id: "repository_name", "name": "repository_name", } ]</code></pre> </div> </div> </div> </div> <div class="sect3"> <h4 id="get_git_fusion_v1_repos_repo"><a class="link" href="#get_git_fusion_v1_repos_repo"><code>GET /git-fusion/v1/repos/[repo]</code></a></h4> <div class="paragraph"> <p>Return configuration for specified repository. Grabs and returns contents of <a href="http://www.perforce.com/perforce/r15.1/manuals/git-fusion/chapter_dyn_ngj_3l.html#section_jgz_nz2_2j">p4gf_config</a> file for given repository.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters"><a class="link" href="#_request_url_path_parameters">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>repo</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#git_fusion_url_encoding">Repository name encoding</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_3"><a class="link" href="#_request_headers_3">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_3"><a class="link" href="#_response_headers_3">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_3"><a class="link" href="#_response_body_json_3">Response Body JSON</a></h5> <div class="paragraph"> <p>Response returns a JSON representation of contents of the <a href="http://www.perforce.com/perforce/r15.1/manuals/git-fusion/chapter_dyn_ngj_3l.html#section_jgz_nz2_2j">p4gf_config file</a> for chosen repo.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "description": "Sample repo", "branches": { "master": { "depot_path" : "//depot/sample_repo_name/...", "client_path": "..." } } }</code></pre> </div> </div> </div> </div> <div class="sect3"> <h4 id="put_git_fusion_v1_repos_repo"><a class="link" href="#put_git_fusion_v1_repos_repo"><code>PUT /git-fusion/v1/repos/[repo]</code></a></h4> <div class="paragraph"> <p>Submits a <a href="http://www.perforce.com/perforce/r15.1/manuals/git-fusion/chapter_dyn_ngj_3l.html#section_jgz_nz2_2j">p4gf_config</a> file to create or update a repository configuration. If repository does not exist or has been previously deleted - saves contents of the config file to a new p4gf_config file. If the repository already has been initialised - replaces the all of the file contents for p4gf_config for specified repository.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_2"><a class="link" href="#_request_url_path_parameters_2">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>repo</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#git_fusion_url_encoding">Repository name encoding</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_4"><a class="link" href="#_request_headers_4">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_json_body"><a class="link" href="#_request_json_body">Request JSON Body</a></h5> <div class="paragraph"> <p>The request should be file contents of a <a href="http://www.perforce.com/perforce/r15.1/manuals/git-fusion/chapter_dyn_ngj_3l.html#section_jgz_nz2_2j">p4gf_config</a> file.</p> </div> <div class="paragraph"> <p>An example request body might look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-plain" data-lang="plain">[@repo] description = Testing repo description [prep] git-branch-name = prep view = //depot/testing_repo_name/... ...</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_response_headers_4"><a class="link" href="#_response_headers_4">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body"><a class="link" href="#_response_body">Response Body</a></h5> <div class="paragraph"> <p>Response returns an object with 'config' value that contains the contents of p4gf_config or an error message.</p> </div> <div class="paragraph"> <p>If upload exists successfully - an example response might look like this:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "description": "Testing repo description", "branches": { "prep": { "depot_path" : "//depot/testing_repo_name/...", "client_path": "..." } } }</code></pre> </div> </div> </div> </div> <div class="sect3"> <h4 id="patch_git_fusion_v1_repos_repo"><a class="link" href="#patch_git_fusion_v1_repos_repo"><code>PATCH /git-fusion/v1/repos/[repo]</code></a></h4> <div class="paragraph"> <p>Updates values in the repository configuration. This will find specified parameters and update its values for a specified repository configuration file.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_3"><a class="link" href="#_request_url_path_parameters_3">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>repo</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#git_fusion_url_encoding">Repository name encoding</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_5"><a class="link" href="#_request_headers_5">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_json_body_2"><a class="link" href="#_request_json_body_2">Request JSON Body</a></h5> <div class="paragraph"> <p>This is a sample string with values to be replaced.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ 'description' = 'Updated description', 'branches': { 'master': { 'git-branch-name' = 'other-branch' } } }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_response_headers_5"><a class="link" href="#_response_headers_5">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_json_body"><a class="link" href="#_response_json_body">Response JSON Body</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> </div> </div> <div class="sect3"> <h4 id="delete_git_fusion_v1_repos_repo"><a class="link" href="#delete_git_fusion_v1_repos_repo"><code>DELETE /git-fusion/v1/repos/[repo]</code></a></h4> <div class="paragraph"> <p>Deletes the repository configuration (<a href="http://www.perforce.com/perforce/r15.1/manuals/git-fusion/chapter_dyn_ngj_3l.html#section_jgz_nz2_2j">p4gf_config file</a>). Contents of the repository are not deleted from Perforce.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_4"><a class="link" href="#_request_url_path_parameters_4">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>repo</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#git_fusion_url_encoding">Repository name encoding</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_6"><a class="link" href="#_request_headers_6">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_6"><a class="link" href="#_response_headers_6">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_json_body_2"><a class="link" href="#_response_json_body_2">Response JSON Body</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> </div> </div> <div class="sect3"> <h4 id="git_fusion_url_encoding"><a class="link" href="#git_fusion_url_encoding">Repository name encoding</a></h4> <div class="paragraph"> <p>All URL’s containing a repository path should have that path encoded to Git Fusion standards to enable appropriate routing. Encoding has to be done by client, according to the table below:</p> </div> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 20%;"> <col style="width: 20%;"> <col style="width: 20%;"> <col style="width: 20%;"> <col style="width: 20%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Character</th> <th class="tableblock halign-left valign-top">Encoding</th> <th class="tableblock halign-left valign-top">Unencoded repository name</th> <th class="tableblock halign-left valign-top">Encoded repository name</th> <th class="tableblock halign-left valign-top">Sample URL with encoded repository name</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">/ (forward slash)</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">_0xS_</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">foo/bar</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">foo_0xS_bar</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">/git-fusion/v1/repos/foo_0xS_bar</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">: (colon)</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">_0xC_</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">foo:bar</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">foo_0xC_bar</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">/git-fusion/v1/repos/foo_0xC_bar</p></td> </tr> </tbody> </table> </div> </div> <div class="sect2"> <h3 id="_helix_git_fusion_user_keys"><a class="link" href="#_helix_git_fusion_user_keys">Helix Git Fusion User Keys</a></h3> <div class="sect3"> <h4 id="get_git_fusion_v1_user_keys"><a class="link" href="#get_git_fusion_v1_user_keys"><code>GET /git-fusion/v1/users/[user]/keys</code></a></h4> <div class="paragraph"> <p>Returns a list of all keys for a user.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_5"><a class="link" href="#_request_url_path_parameters_5">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>user</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#encode_uri">Encoding Perforce username & SSH key names</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_7"><a class="link" href="#_request_headers_7">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_7"><a class="link" href="#_response_headers_7">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_4"><a class="link" href="#_response_body_json_4">Response Body JSON</a></h5> <div class="paragraph"> <p>Response consists of a list of hashes - each entry containing a key for specified user with file name under which the key is stored.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { 'key_name': 'key_file_name', 'user': 'jdoe', 'key': "-----BEGIN PUBLIC KEY-----\nSSHKEYCONTENT\n-----END PUBLIC KEY-----" }, { 'key_name': 'other_key_file_name', 'user': 'jdoe', 'key': "-----BEGIN PUBLIC KEY-----\nSSHKEYCONTENT2\n-----END PUBLIC KEY-----" } ]</code></pre> </div> </div> </div> </div> <div class="sect3"> <h4 id="put_git_fusion_v1_keys_user_key_name"><a class="link" href="#put_git_fusion_v1_keys_user_key_name"><code>PUT /git-fusion/v1/users/[user]/keys/[key_name]</code></a></h4> <div class="paragraph"> <p>Submits a new SSH key for specified user under chosen name.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_6"><a class="link" href="#_request_url_path_parameters_6">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>user</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Encoded version of perforce username. See <a href="#encode_uri">Encoding Perforce username & SSH key names</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>key_name</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Encoded version of key name. See <a href="#encode_uri">Encoding Perforce username & SSH key names</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_8"><a class="link" href="#_request_headers_8">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_json_body_3"><a class="link" href="#_request_json_body_3">Request JSON Body</a></h5> <div class="paragraph"> <p>The request should be file contents of a new SSH key that should be submitted.</p> </div> <div class="paragraph"> <p>An example request body might look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-plain" data-lang="plain">-----BEGIN PUBLIC KEY----- SSHKEYCONTENT5 -----END PUBLIC KEY-----</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_response_headers_8"><a class="link" href="#_response_headers_8">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_5"><a class="link" href="#_response_body_json_5">Response Body JSON</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> </div> </div> <div class="sect3"> <h4 id="delete_git_fusion_v1_delete_key"><a class="link" href="#delete_git_fusion_v1_delete_key"><code>DELETE /git-fusion/v1/users/[user]/keys/[key_name]</code></a></h4> <div class="paragraph"> <p>Deletes specified key for chosen user.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_7"><a class="link" href="#_request_url_path_parameters_7">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>user</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Encoded version of perforce username. See <a href="#encode_uri">Encoding Perforce username & SSH key names</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>key_name</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Encoded version of key name. See <a href="#encode_uri">Encoding Perforce username & SSH key names</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_9"><a class="link" href="#_request_headers_9">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_9"><a class="link" href="#_response_headers_9">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_json_body_3"><a class="link" href="#_response_json_body_3">Response JSON Body</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> </div> </div> <div class="sect3"> <h4 id="delete_git_fusion_v1_user_keys"><a class="link" href="#delete_git_fusion_v1_user_keys"><code>DELETE /git-fusion/v1/users/[user]/keys</code></a></h4> <div class="paragraph"> <p>Deletes all SSH keys for specified user.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_8"><a class="link" href="#_request_url_path_parameters_8">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>user</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#encode_uri">Encoding Perforce username & SSH key names</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_10"><a class="link" href="#_request_headers_10">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_10"><a class="link" href="#_response_headers_10">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_json_body_4"><a class="link" href="#_response_json_body_4">Response JSON Body</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> </div> </div> <div class="sect3"> <h4 id="encode_uri"><a class="link" href="#encode_uri">Encoding Perforce username & SSH key names</a></h4> <div class="paragraph"> <p>All perforce usernames and SSH key names present in URL’s must be encoded by replacing <a href="https://tools.ietf.org/html/rfc3986#section-2.2">reserved characters as defined by RFC3986 section 2.2 general-delimeters</a> with a percent sign followed by a hexadecimal representation of codepoint of the character.</p> </div> <div class="paragraph"> <p>SubmitShelf(project, change ID)</p> </div> </div> </div> <div class="sect2"> <h3 id="_helix_sync_changes"><a class="link" href="#_helix_sync_changes">Helix Sync Changes</a></h3> <div class="paragraph"> <p>Many operations for Helix Sync are related to manipulating changelists in order to share state across devices.</p> </div> <div class="sect3"> <h4 id="get_helix_sync_v1_project_last_change"><a class="link" href="#get_helix_sync_v1_project_last_change"><code>GET /helix-sync/v1/[project]/last-change</code></a></h4> <div class="paragraph"> <p>Return the latest change number available for a project.</p> </div> <div class="paragraph"> <p>This method can have multiple implementations.</p> </div> <div class="paragraph"> <p>To use a "Helix Versioning Engine Project" as defined in <a href="#appendix_hve_project_json">Appendix B: Helix Versioning Engine Project JSON</a>, you will need to ensure the <code>HVE_PROJECT_PATH</code> is set. This can be set on a request, or on the system as a whole.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_9"><a class="link" href="#_request_url_path_parameters_9">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>project</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The project ID, see <a href="#appendix_project_json">Appendix A: Project JSON</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_url_query_parameters"><a class="link" href="#_request_url_query_parameters">Request URL Query Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 33%;"> <col style="width: 33%;"> <col style="width: 33%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Required?</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>default</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If set, we will return this value instead of issuing a 404 reply in place of the nonexisting changelist number.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_11"><a class="link" href="#_request_headers_11">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_11"><a class="link" href="#_response_headers_11">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_6"><a class="link" href="#_response_body_json_6">Response Body JSON</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>The response of this method is a single JSON object with a single property, called <code>change</code>, which indicates the latest changelist number.</p> </div> </div> </div> <div class="sect3"> <h4 id="get_helix_sync_v1_project_pending"><a class="link" href="#get_helix_sync_v1_project_pending"><code>GET /helix-sync/v1/[project]/pending</code></a></h4> <div class="paragraph"> <p>Returns the pending changelist to be used as the primary shelf for this project for the authenticated user. If such a changelist does not exist, you can use <a href="#post_helix_sync_v1_changes_project">[post_helix_sync_v1_changes_project]</a> to create one.</p> </div> <div class="paragraph"> <p>By default, will return a 404 (not found) if such a changelist does not exist. If you have set a <code>default</code> value via the URL request query parameter, that value will be returned instead, and you should receive an HTTP 200 status.</p> </div> <div class="paragraph"> <p>This method can have multiple implementations.</p> </div> <div class="paragraph"> <p>To use a "Helix Versioning Engine Project" as defined in <a href="#appendix_hve_project_json">Appendix B: Helix Versioning Engine Project JSON</a>, you will need to ensure the <code>HVE_PROJECT_PATH</code> is set. This can be set on a request, or on the system as a whole.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_10"><a class="link" href="#_request_url_path_parameters_10">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>project</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The project ID, see <a href="#appendix_project_json">Appendix A: Project JSON</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_url_query_parameters_2"><a class="link" href="#_request_url_query_parameters_2">Request URL Query Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 33%;"> <col style="width: 33%;"> <col style="width: 33%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Required?</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>default</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If set, we will return this value instead of issuing a 404 reply in place of the nonexisting changelist number.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_12"><a class="link" href="#_request_headers_12">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_12"><a class="link" href="#_response_headers_12">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_7"><a class="link" href="#_response_body_json_7">Response Body JSON</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>The response of this method is a single JSON object with a single property, called <code>change</code>, which indicates the latest changelist number.</p> </div> <div class="paragraph"> <p>In the case no change exists, there will be no response body, and a 404 response code will be returned instead.</p> </div> </div> </div> <div class="sect3"> <h4 id="delete_helix_sync_v1_project_pending"><a class="link" href="#delete_helix_sync_v1_project_pending"><code>DELETE /helix-sync/v1/:project_id/pending</code></a></h4> <div class="paragraph"> <p>Deletes the pending changelist for project.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_11"><a class="link" href="#_request_url_path_parameters_11">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>project</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The project ID, see <a href="#appendix_project_json">Appendix A: Project JSON</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_13"><a class="link" href="#_request_headers_13">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_13"><a class="link" href="#_response_headers_13">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_8"><a class="link" href="#_response_body_json_8">Response Body JSON</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> </div> </div> <div class="sect3"> <h4 id="get_helix_sync_v1_project_preview"><a class="link" href="#get_helix_sync_v1_project_preview"><code>GET /helix-sync/v1/[project]/preview</code></a></h4> <div class="paragraph"> <p>Generates the "resolve plan" for what the Helix Sync method would implement for the method <a href="#post_helix_sync_v1_changes_project_pending">[post_helix_sync_v1_changes_project_pending]</a>.</p> </div> <div class="paragraph"> <p>The resolve plan is an array of resolution tasks to handle.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_12"><a class="link" href="#_request_url_path_parameters_12">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>project</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The project ID, see <a href="#appendix_project_json">Appendix A: Project JSON</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_14"><a class="link" href="#_request_headers_14">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_14"><a class="link" href="#_response_headers_14">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_9"><a class="link" href="#_response_body_json_9">Response Body JSON</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="admonitionblock warning"> <table> <tr> <td class="icon"> <div class="title">Warning</div> </td> <td class="content"> The details of the resolve plan JSON are not yet finalized. </td> </tr> </table> </div> </div> </div> <div class="sect3"> <h4 id="post_helix_sync_v1_project_submit"><a class="link" href="#post_helix_sync_v1_project_submit"><code>POST /helix-sync/v1/[project]/submit</code></a></h4> <div class="paragraph"> <p>Requests to submit the particular pending changelist for the project. It’s assumed that what you want to submit has been shelved, and no open files remain on your local clients.</p> </div> <div class="paragraph"> <p>There is no response body when this method succeeds, only in failure.</p> </div> <div class="paragraph"> <p>This method can have multiple implementations.</p> </div> <div class="paragraph"> <p>To use a "Helix Versioning Engine Project" as defined in <a href="#appendix_hve_project_json">Appendix B: Helix Versioning Engine Project JSON</a>, you will need to ensure the <code>HVE_PROJECT_PATH</code> is set. This can be set on a request, or on the system as a whole. This implementation only runs a submit -e on the pending changelist. No resolution is currently performed.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_13"><a class="link" href="#_request_url_path_parameters_13">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>project</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The project ID, see <a href="#appendix_project_json">Appendix A: Project JSON</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_15"><a class="link" href="#_request_headers_15">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_15"><a class="link" href="#_response_headers_15">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_10"><a class="link" href="#_response_body_json_10">Response Body JSON</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_sync_clients"><a class="link" href="#_helix_sync_clients">Helix Sync Clients</a></h3> <div class="sect3"> <h4 id="post_helix_sync_v1_project_clients_device"><a class="link" href="#post_helix_sync_v1_project_clients_device"><code>POST /helix-sync/v1/[project]/clients/device</code></a></h4> <div class="paragraph"> <p>Creates a new client workspace for use by helix sync for a particular device.</p> </div> <div class="paragraph"> <p>This method can have multiple implementations.</p> </div> <div class="paragraph"> <p>To use a "Helix Versioning Engine Project" as defined in <a href="#appendix_hve_project_json">Appendix B: Helix Versioning Engine Project JSON</a>, you will need to ensure the <code>HVE_PROJECT_PATH</code> is set. This can be set on a request, or on the system as a whole.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_14"><a class="link" href="#_request_url_path_parameters_14">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>project</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The project ID, see <a href="#appendix_project_json">Appendix A: Project JSON</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_16"><a class="link" href="#_request_headers_16">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json"><a class="link" href="#_request_body_json">Request Body JSON</a></h5> <div class="paragraph"> <p>Requires a JSON object with the following parameters:</p> </div> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Property</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>project</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The project ID, see <a href="#appendix_project_json">Appendix A: Project JSON</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>device</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">A unique ID for the device in use.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>root</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The directory path on the user’s machine to use.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_16"><a class="link" href="#_response_headers_16">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_11"><a class="link" href="#_response_body_json_11">Response Body JSON</a></h5> <div class="paragraph"> <p>Returns a JSON object with a <code>client</code> property, indicating the client name to use.</p> </div> </div> </div> <div class="sect3"> <h4 id="delete_helix_sync_v1_project_clients_device_device"><a class="link" href="#delete_helix_sync_v1_project_clients_device_device"><code>DELETE /helix-sync/v1/[project]/clients/device/[device]</code></a></h4> <div class="paragraph"> <p>Removes the client workspace associated for the project associated with a particular device.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_15"><a class="link" href="#_request_url_path_parameters_15">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>project</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The project ID, see <a href="#appendix_project_json">Appendix A: Project JSON</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>device</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The device ID associated with the client, see <a href="#appendix_project_json">Appendix A: Project JSON</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_17"><a class="link" href="#_request_headers_17">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_17"><a class="link" href="#_response_headers_17">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_12"><a class="link" href="#_response_body_json_12">Response Body JSON</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> </div> </div> <div class="sect3"> <h4 id="post_helix_sync_v1_project_clients_shelf"><a class="link" href="#post_helix_sync_v1_project_clients_shelf"><code>POST /helix-sync/v1/[project]/clients/shelf</code></a></h4> <div class="paragraph"> <p>Creates a new client workspace for use by helix sync for the main shelf.</p> </div> <div class="paragraph"> <p>This method can have multiple implementations.</p> </div> <div class="paragraph"> <p>To use a "Helix Versioning Engine Project" as defined in <a href="#appendix_hve_project_json">Appendix B: Helix Versioning Engine Project JSON</a>, you will need to ensure the <code>HVE_PROJECT_PATH</code> is set. This can be set on a request, or on the system as a whole.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_16"><a class="link" href="#_request_url_path_parameters_16">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>project</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The project ID, see <a href="#appendix_project_json">Appendix A: Project JSON</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_18"><a class="link" href="#_request_headers_18">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_2"><a class="link" href="#_request_body_json_2">Request Body JSON</a></h5> <div class="paragraph"> <p>Requires a JSON object with the following parameters:</p> </div> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Property</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>project</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The project ID, see <a href="#appendix_project_json">Appendix A: Project JSON</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>root</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The directory path on the user’s machine to use.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_18"><a class="link" href="#_response_headers_18">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_13"><a class="link" href="#_response_body_json_13">Response Body JSON</a></h5> <div class="paragraph"> <p>Returns a JSON object with a <code>client</code> property, indicating the client name to use.</p> </div> </div> </div> <div class="sect3"> <h4 id="delete_helix_sync_v1_project_clients_shelf"><a class="link" href="#delete_helix_sync_v1_project_clients_shelf"><code>DELETE /helix-sync/v1/[project]/clients/shelf</code></a></h4> <div class="paragraph"> <p>Removes the client workspace associated for the project for the purposes of shelving.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_17"><a class="link" href="#_request_url_path_parameters_17">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>project</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The project ID, see <a href="#appendix_project_json">Appendix A: Project JSON</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_19"><a class="link" href="#_request_headers_19">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_19"><a class="link" href="#_response_headers_19">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_14"><a class="link" href="#_response_body_json_14">Response Body JSON</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_branches"><a class="link" href="#_helix_versioning_engine_branches">Helix Versioning Engine Branches</a></h3> <div class="sect3"> <h4 id="get_p4_vX_branches"><a class="link" href="#get_p4_vX_branches"><code>GET /p4/v[api]/branches</code></a></h4> <div class="paragraph"> <p>Lists available branches in the system. The resources of this list are summaries of branches in the system.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_18"><a class="link" href="#_request_url_path_parameters_18">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_20"><a class="link" href="#_request_headers_20">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_20"><a class="link" href="#_response_headers_20">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_15"><a class="link" href="#_response_body_json_15">Response Body JSON</a></h5> <div class="paragraph"> <p>The values of this method are based on the result of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_branches.html"><code>p4 -ztag branches</code></a> command. For more field information refer to the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_branches.html">command reference</a>.</p> </div> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>An example response body might look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "branch": "manually", "Update": "1437153920", "Access": "1437153920", "Owner": "jdoe", "Options": "unlocked", "Description": "Created by jdoe.\n" }, { "branch": "new_branch_CEUXQMYN", "Update": "1437164204", "Access": "1437164204", "Owner": "", "Options": "unlocked", "Description": "Something for the kids\n" } ]</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client"><a class="link" href="#_ruby_client">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#branches-instance_method"><code>HelixWebServicesClient#branches</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="post_p4_vX_branches"><a class="link" href="#post_p4_vX_branches"><code>POST /p4/v[api]/branches</code></a></h4> <div class="paragraph"> <p>Creates a new branch specification, like the <code>p4 branch</code> command.</p> </div> <div class="paragraph"> <p>There are no other parameters to this method.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_19"><a class="link" href="#_request_url_path_parameters_19">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_21"><a class="link" href="#_request_headers_21">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_3"><a class="link" href="#_request_body_json_3">Request Body JSON</a></h5> <div class="paragraph"> <p>Properties of the JSON object are the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_branch.html">p4 branch</a> command.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Branch": "my-project-main", "Description": "Branch my project from main to dev.\n", "View": ["//depot/main/my-project/... //depot/dev/my-project/..."] }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_response_headers_21"><a class="link" href="#_response_headers_21">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_2"><a class="link" href="#_ruby_client_2">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#create_branch-instance_method"><code>HelixWebServicesClient#create_branch</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="get_p4_vX_branches_branch"><a class="link" href="#get_p4_vX_branches_branch"><code>GET /p4/v[api]/branches/[branch]</code></a></h4> <div class="paragraph"> <p>Return branch details, similar to the <code>p4 branch -o</code> command.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_20"><a class="link" href="#_request_url_path_parameters_20">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">branch</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The branch name.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_22"><a class="link" href="#_request_headers_22">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_22"><a class="link" href="#_response_headers_22">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_data"><a class="link" href="#_response_data">Response Data</a></h5> <div class="paragraph"> <p>Returns the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_branch.html"><code>p4 -ztag branch [branch name</a></code>] command. For more information, see the command reference. The main difference between the details and list view is the inclusion of the View field.</p> </div> </div> <div class="sect4"> <h5 id="_example_json_response"><a class="link" href="#_example_json_response">Example JSON Response</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Branch": "my-project-main", "Update": "2015/07/22 11:34:14", "Access": "2015/07/22 11:34:14", "Description": "Branch my project from main to dev.\n", "Options": "unlocked", "View": [ "//depot/main/my-project/... //depot/dev/my-project/..." ] }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_3"><a class="link" href="#_ruby_client_3">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#branch-instance_method"><code>HelixWebServicesClient#branch</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="patch_p4_vX_branches_branch"><a class="link" href="#patch_p4_vX_branches_branch"><code>PATCH /p4/v[api]/branches/[branch]</code></a></h4> <div class="paragraph"> <p>Update branch specifications, similar to the <code>p4 branch</code> command. Only the specified parameters in the body will be changed.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_21"><a class="link" href="#_request_url_path_parameters_21">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">branch</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The name of the branch</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_23"><a class="link" href="#_request_headers_23">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_4"><a class="link" href="#_request_body_json_4">Request Body JSON</a></h5> <div class="paragraph"> <p>A single JSON object containing form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_branch.html"><code>p4 -ztag branch [branch name</a></code>] command.</p> </div> </div> <div class="sect4"> <h5 id="_response_headers_23"><a class="link" href="#_response_headers_23">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_example_json_request_body"><a class="link" href="#_example_json_request_body">Example JSON Request Body</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Description": "The updated my-project-main description.\n", "Owner": "saustin" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_4"><a class="link" href="#_ruby_client_4">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#update_branch-instance_method"><code>HelixWebServicesClient#update_branch</code></a></p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">client.update_branch({ "Branch" => 'my_branch_id', "Description" => "The updated my-project-main description.\n", "Owner" => "saustin" })</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="delete_p4_vX_branches_branch"><a class="link" href="#delete_p4_vX_branches_branch"><code>DELETE /p4/v[api]/branches/[branch]</code></a></h5> <div class="paragraph"> <p>Removes the branch specification, similar to the <code>p4 branch -d</code> command.</p> </div> <div class="sect5"> <h6 id="_request_url_path_parameters_22"><a class="link" href="#_request_url_path_parameters_22">Request URL Path Parameters</a></h6> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">branch</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The name of the branch</p></td> </tr> </tbody> </table> </div> </div> <div class="sect4"> <h5 id="_request_headers_24"><a class="link" href="#_request_headers_24">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_24"><a class="link" href="#_response_headers_24">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_5"><a class="link" href="#_ruby_client_5">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#delete_branch-instance_method"><code>HelixWebServicesClient#delete_branch</code></a></p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_changes"><a class="link" href="#_helix_versioning_engine_changes">Helix Versioning Engine Changes</a></h3> <div class="sect3"> <h4 id="get_p4_vX_changes"><a class="link" href="#get_p4_vX_changes"><code>GET /p4/v[api]/changes</code></a></h4> <div class="paragraph"> <p>List changelist summaries, with some common filtering options.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_23"><a class="link" href="#_request_url_path_parameters_23">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_uri_query_parameters"><a class="link" href="#_request_uri_query_parameters">Request URI Query Parameters</a></h5> <div class="paragraph"> <p>The following parameters are all optional.</p> </div> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Key</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>max</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Limits the number of results returned See the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_changes.html">changes -m</a> option.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>status</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Only return results with the indicated status. See the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_changes.html">changes -s</a> option.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>user</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Only return changes owned by this particular user. See the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_changes.html">changes -u</a> option.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>files</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Limit changes to the depot path expressions. See the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_changes.html">changes</a> command description.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_25"><a class="link" href="#_request_headers_25">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_25"><a class="link" href="#_response_headers_25">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_16"><a class="link" href="#_response_body_json_16">Response Body JSON</a></h5> <div class="paragraph"> <p>The values of this method are based on the result of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_changes.html"><code>p4 -ztag changes</code></a> command.</p> </div> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>An example response body might look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "change": "20", "time": "1437589210", "user": "jdoe", "client": "AUERUGBO", "status": "submitted", "changeType": "public", "path": "//depot/dev/Experimental/*", "desc": "Upload two experimental files\n" }, { "change": "19", "time": "1437589209", "user": "jdoe", "client": "PRQSCBCT", "status": "submitted", "changeType": "public", "path": "//depot/test-UDQXTCFI/Experimental/*", "desc": "Edited files\n" } ]</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_6"><a class="link" href="#_ruby_client_6">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#changes-instance_method"><code>HelixWebServicesClient#changes</code></a></p> </div> </div> <div class="sect4"> <h5 id="post_p4_vX_changes"><a class="link" href="#post_p4_vX_changes"><code>POST /p4/v[api]/changes</code></a></h5> <div class="paragraph"> <p>Create a new changelist that can affect multiple files using different kinds of actions. If you require the ability to integrate or move, for example, you can use this method.</p> </div> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_24"><a class="link" href="#_request_url_path_parameters_24">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_26"><a class="link" href="#_request_headers_26">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> <div class="sect5"> <h6 id="_request_json_body_4"><a class="link" href="#_request_json_body_4">Request JSON Body</a></h6> <div class="paragraph"> <p>The request should be a JSON object with the following properties:</p> </div> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 20%;"> <col style="width: 20%;"> <col style="width: 20%;"> <col style="width: 20%;"> <col style="width: 20%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-left valign-top">Type</th> <th class="tableblock halign-left valign-top">Parameter Type</th> <th class="tableblock halign-left valign-top">Required</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Description</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Textual description of the change</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">body</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Files</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Array of file change actions to take (See below)</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">array</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">body</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> </tr> </tbody> </table> <div class="paragraph"> <p>Each object in the <code>Files</code> array consists of the following properties:</p> </div> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 33%;"> <col style="width: 33%;"> <col style="width: 33%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-left valign-top">Required</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>DepotFile</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The depot path specifier for the action</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>FromDepotFile</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">When the Action is a branch or move, this indicates the source of the operation.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Action</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">One of <code>upload</code>, <code>branch</code>, or <code>move</code>.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If the Action is upload, this is the base-64 encoded file content.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>RequireVersion</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If the current version is not set at this version string, consider it an error.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> </tr> </tbody> </table> <div class="paragraph"> <p>An example JSON request body would look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Description": "My Test Change", "Files": [ { "Action": "upload", "DepotFile": "//depot/example.txt", "Content": "SSBhbSBhIGxpdHRsZSB0ZWFwb3Q=" } ] }</code></pre> </div> </div> </div> </div> <div class="sect4"> <h5 id="_response_headers_26"><a class="link" href="#_response_headers_26">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_json"><a class="link" href="#_response_json">Response JSON</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> </div> <div class="sect4"> <h5 id="_ruby_client_7"><a class="link" href="#_ruby_client_7">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#create_change-instance_method"><code>HelixWebServicesClient#create_change</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="get_p4_vX_changes_change"><a class="link" href="#get_p4_vX_changes_change"><code>GET /p4/v[api]/changes/[change]</code></a></h4> <div class="paragraph"> <p>Read details of a single changelist in the system.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_25"><a class="link" href="#_request_url_path_parameters_25">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">change</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The changelist number.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_27"><a class="link" href="#_request_headers_27">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_27"><a class="link" href="#_response_headers_27">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_json_body_5"><a class="link" href="#_response_json_body_5">Response JSON Body</a></h5> <div class="paragraph"> <p>The values of this method are based on the result of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_describe.html"><code>p4 -ztag describe</code></a> command.</p> </div> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>An example response might look like this:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "change": "1", "user": "super", "client": "JGOJOUDY", "time": "1437581534", "desc": "A few basic adds\n", "status": "submitted", "changeType": "public", "path": "//depot/...", "depotFile": [ "//depot/dev/Experimental/README", "//depot/main/My Project/README" ], "action": [ "add", "add" ], "type": [ "text", "text" ], "rev": [ "1", "1" ], "fileSize": [ "40", "34" ], "digest": [ "5606AFCE00250FC14B2D932BAF5CE45B", "0FA2BDFCEACC2A445EFDF86BEB6D3F9F" ] } ]</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_8"><a class="link" href="#_ruby_client_8">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#change-instance_method"><code>HelixWebServicesClient#change</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="post_p4_vX_changes_change"><a class="link" href="#post_p4_vX_changes_change"><code>POST /p4/v[api]/changes/[change]</code></a></h4> <div class="paragraph"> <p>Submit shelved changes to the depot. Uses the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_describe.html"><code>p4 submit -e</code></a> command to perform the submit.</p> </div> <div class="paragraph"> <p>This method will fail:</p> </div> <div class="olist arabic"> <ol class="arabic"> <li> <p>If the changelist in question is not a pending changelist with a shelf.</p> </li> <li> <p>If any resolves are required.</p> </li> <li> <p>If any files are open on the pending changelist. You must revert all local changes before calling this method.</p> </li> </ol> </div> <div class="paragraph"> <p>If the changelist is based on a stream client, this will generate a temporary stream client as appropriate.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_26"><a class="link" href="#_request_url_path_parameters_26">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">change</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The changelist number.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_28"><a class="link" href="#_request_headers_28">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_28"><a class="link" href="#_response_headers_28">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_json_body_6"><a class="link" href="#_response_json_body_6">Response JSON Body</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_clients"><a class="link" href="#_helix_versioning_engine_clients">Helix Versioning Engine Clients</a></h3> <div class="sect3"> <h4 id="get_p4_vX_clients"><a class="link" href="#get_p4_vX_clients"><code>GET /p4/v[api]/clients</code></a></h4> <div class="paragraph"> <p>Lists available clients in the system. The resources of this list are summaries of clients in the system.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_27"><a class="link" href="#_request_url_path_parameters_27">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_29"><a class="link" href="#_request_headers_29">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_29"><a class="link" href="#_response_headers_29">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_17"><a class="link" href="#_response_body_json_17">Response Body JSON</a></h5> <div class="paragraph"> <p>The values of this method are based on the result of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_clients.html"><code>p4 -ztag clients</code></a> command. For more field information refer to the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_clients.html">command reference</a>.</p> </div> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>An example response body might look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "client": "test_EEDOGMCS", "Update": "1437169680", "Access": "1437169680", "Owner": "", "Options": "noallwrite noclobber nocompress unlocked nomodtime normdir", "SubmitOptions": "submitunchanged", "LineEnd": "local", "Root": "/tmp/clients/test_EEDOGMCS", "Host": "", "Description": "Test EEDOGMCS\n" }, { "client": "test_QBZEOHBJ", "Update": "1437169655", "Access": "1437169655", "Owner": "jdoe", "Options": "noallwrite noclobber nocompress unlocked nomodtime normdir", "SubmitOptions": "submitunchanged", "LineEnd": "local", "Root": "/Users/tristan/dev/hws", "Host": "localhost", "Description": "Test QBZEOHBJ\n" } ]</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_9"><a class="link" href="#_ruby_client_9">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#clients-instance_method"><code>HelixWebServicesClient#clients</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="post_p4_vX_clients"><a class="link" href="#post_p4_vX_clients"><code>POST /p4/v[api]/clients</code></a></h4> <div class="paragraph"> <p>Creates a new client specification, like the <code>p4 client</code> command.</p> </div> <div class="paragraph"> <p>There are no other parameters to this method.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_28"><a class="link" href="#_request_url_path_parameters_28">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_30"><a class="link" href="#_request_headers_30">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_5"><a class="link" href="#_request_body_json_5">Request Body JSON</a></h5> <div class="paragraph"> <p>Properties of the JSON object are the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_client.html">p4 client</a> command.</p> </div> </div> <div class="sect4"> <h5 id="_response_headers_30"><a class="link" href="#_response_headers_30">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_example_request_json"><a class="link" href="#_example_request_json">Example Request JSON</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Client": "my_project_main", "Host": "superawesome", "Root": "/home/jimbob/my_project_main", "Description": "My project client on superawesome.\n", "Options": "noallwrite noclobber nocompress unlocked nomodtime normdir", "View": ["//depot/main/my-project/... //my_project_main/depot/main/my-project/..."] }</code></pre> </div> </div> </div> </div> <div class="sect3"> <h4 id="_ruby_client_example"><a class="link" href="#_ruby_client_example">Ruby Client Example</a></h4> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">client.create_client({ "Client" => "my_project_main", "Host" => "superawesome", "Root" => "/home/jimbob/my_project_main", "Description" => "My project client on superawesome.\n", "Options" => "noallwrite noclobber nocompress unlocked nomodtime normdir" "View" => ["//depot/main/my-project/... //my_project_main/depot/main/my-project/..."] })</code></pre> </div> </div> <div class="sect4"> <h5 id="_ruby_client_10"><a class="link" href="#_ruby_client_10">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#create_client-instance_method"><code>HelixWebServicesClient#create_client</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="get_p4_vX_clients_client"><a class="link" href="#get_p4_vX_clients_client"><code>GET /p4/v[api]/clients/[client]</code></a></h4> <div class="paragraph"> <p>Return client details, similar to the <code>p4 client -o</code> command.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_29"><a class="link" href="#_request_url_path_parameters_29">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">client</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The client name.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_31"><a class="link" href="#_request_headers_31">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_31"><a class="link" href="#_response_headers_31">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_data_2"><a class="link" href="#_response_data_2">Response Data</a></h5> <div class="paragraph"> <p>Returns the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_client.html"><code>p4 -ztag client [client name</a></code>] command. For more information, see the command reference. The main difference between the details and list view is the inclusion of the View field.</p> </div> </div> <div class="sect4"> <h5 id="_example_json_response_2"><a class="link" href="#_example_json_response_2">Example JSON Response</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Client": "my_project_main", "Update": "2015/07/22 11:36:46", "Access": "2015/07/22 11:36:46", "Host": "superawesome", "Description": "My project client on superawesome.\n", "Root": "/home/user/my_project_main", "Options": "noallwrite noclobber nocompress unlocked nomodtime normdir", "SubmitOptions": "submitunchanged", "LineEnd": "local", "View": [ "//depot/main/my-project/... //my_project_main/depot/main/my-project/..." ] }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_11"><a class="link" href="#_ruby_client_11">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#client-instance_method"><code>HelixWebServicesClient#client</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="patch_p4_vX_clients_client"><a class="link" href="#patch_p4_vX_clients_client"><code>PATCH /p4/v[api]/clients/[client]</code></a></h4> <div class="paragraph"> <p>Update client specifications, similar to the <code>p4 client</code> command. Only the specified parameters in the body will be changed.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_30"><a class="link" href="#_request_url_path_parameters_30">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">client</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The client name.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_32"><a class="link" href="#_request_headers_32">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_6"><a class="link" href="#_request_body_json_6">Request Body JSON</a></h5> <div class="paragraph"> <p>A single JSON object containing form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_client.html"><code>p4 -ztag client [client name</a></code>] command.</p> </div> </div> <div class="sect4"> <h5 id="_response_headers_32"><a class="link" href="#_response_headers_32">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_example_json_request_body_2"><a class="link" href="#_example_json_request_body_2">Example JSON Request Body</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Options": "allwrite noclobber nocompress unlocked nomodtime rmdir" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_12"><a class="link" href="#_ruby_client_12">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#update_client-instance_method"><code>HelixWebServicesClient#update_client</code></a></p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">client.update_client({ "Options" => "noallwrite noclobber nocompress unlocked nomodtime normdir" })</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="delete_p4_vX_clients_client"><a class="link" href="#delete_p4_vX_clients_client"><code>DELETE /p4/v[api]/clients/[client]</code></a></h5> <div class="paragraph"> <p>Removes the client specification, similar to the <code>p4 client -d</code> command.</p> </div> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_31"><a class="link" href="#_request_url_path_parameters_31">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">client</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The client name.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_33"><a class="link" href="#_request_headers_33">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_33"><a class="link" href="#_response_headers_33">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_13"><a class="link" href="#_ruby_client_13">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#delete_client-instance_method"><code>HelixWebServicesClient#delete_client</code></a></p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_commands"><a class="link" href="#_helix_versioning_engine_commands">Helix Versioning Engine Commands</a></h3> <div class="sect3"> <h4 id="get_p4_vX_commands_command"><a class="link" href="#get_p4_vX_commands_command"><code>GET /p4/v[api]/commands/[command]</code></a></h4> <div class="paragraph"> <p>Execute a Perforce command that takes no input.</p> </div> <div class="paragraph"> <p>This only allows commands that have been whitelisted on your system. See the <a href="#system_configuration">Configuration</a> section for details.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_32"><a class="link" href="#_request_url_path_parameters_32">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 33%;"> <col style="width: 33%;"> <col style="width: 33%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Required</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>command</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The command name, that should be whitelisted in the system configuration. See <a href="#system_configuration">Configuration</a>.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_34"><a class="link" href="#_request_headers_34">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_34"><a class="link" href="#_response_headers_34">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_18"><a class="link" href="#_response_body_json_18">Response Body JSON</a></h5> <div class="paragraph"> <p>Responses are typically an array, mapped from the <code>p4 -ztag</code> output of a command.</p> </div> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> </div> <div class="sect4"> <h5 id="_ruby_client_14"><a class="link" href="#_ruby_client_14">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#command-instance_method"><code>HelixWebServicesClient#command</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="post_p4_vX_commands_command"><a class="link" href="#post_p4_vX_commands_command"><code>POST /p4/v[api]/commands/[command]</code></a></h4> <div class="paragraph"> <p>Execute a Perforce command that accepts input, like a spec.</p> </div> <div class="paragraph"> <p>This only allows commands that have been whitelisted on your system. See the <a href="#system_configuration">Configuration</a> section for details.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_33"><a class="link" href="#_request_url_path_parameters_33">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 33%;"> <col style="width: 33%;"> <col style="width: 33%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Required</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>command</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The command name, that should be whitelisted in the system configuration. See <a href="#system_configuration">Configuration</a>.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_35"><a class="link" href="#_request_headers_35">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_7"><a class="link" href="#_request_body_json_7">Request Body JSON</a></h5> <div class="paragraph"> <p>The request body is a JSON structure, which becomes converted to a Ruby hash. This hash is used as input via the <code>p4.input</code> class property of P4Ruby. See <a href="http://www.perforce.com/perforce/doc.current/manuals/p4script/ruby.p4.html#ruby.p4.input.eq"><code>P4.input</code></a> for more information.</p> </div> </div> <div class="sect4"> <h5 id="_response_headers_35"><a class="link" href="#_response_headers_35">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_19"><a class="link" href="#_response_body_json_19">Response Body JSON</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> </div> <div class="sect4"> <h5 id="_ruby_client_15"><a class="link" href="#_ruby_client_15">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#command_with_input-instance_method"><code>HelixWebServicesClient#command_with_input</code></a></p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_counters"><a class="link" href="#_helix_versioning_engine_counters">Helix Versioning Engine Counters</a></h3> <div class="sect3"> <h4 id="get_p4_vX_counters"><a class="link" href="#get_p4_vX_counters"><code>GET /p4/v[api]/counters</code></a></h4> <div class="paragraph"> <p>Lists available counters in the system. The resources of this list are summaries of counters in the system.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_34"><a class="link" href="#_request_url_path_parameters_34">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_36"><a class="link" href="#_request_headers_36">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_36"><a class="link" href="#_response_headers_36">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_20"><a class="link" href="#_response_body_json_20">Response Body JSON</a></h5> <div class="paragraph"> <p>The values of this method are based on the result of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_counters.html"><code>p4 -ztag counters</code></a> command. For more field information refer to the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_counters.html">command reference</a>.</p> </div> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>An example response body might look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "counter": "build", "value": "54809" }, { "counter": "build_good", "value": "54670" } ]</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_16"><a class="link" href="#_ruby_client_16">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#counters-instance_method"><code>HelixWebServicesClient#counters</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="get_p4_vX_counters_counter"><a class="link" href="#get_p4_vX_counters_counter"><code>GET /p4/v[api]/counters/[counter]</code></a></h4> <div class="paragraph"> <p>Return counter details, similar to the <code>p4 counter</code> command.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_35"><a class="link" href="#_request_url_path_parameters_35">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">counter</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The counter name.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_37"><a class="link" href="#_request_headers_37">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_37"><a class="link" href="#_response_headers_37">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_data_3"><a class="link" href="#_response_data_3">Response Data</a></h5> <div class="paragraph"> <p>Returns the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_counter.html"><code>p4 -ztag counter [counter name</a></code>] command. For more information, see the command reference. The main difference between the details and list view is the inclusion of the View field.</p> </div> </div> <div class="sect4"> <h5 id="_example_json_response_3"><a class="link" href="#_example_json_response_3">Example JSON Response</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "counter": "build", "value": "54809" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_17"><a class="link" href="#_ruby_client_17">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#counter-instance_method"><code>HelixWebServicesClient#counter</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="put_p4_vX_counters_counter"><a class="link" href="#put_p4_vX_counters_counter"><code>PUT /p4/v[api]/counters/[counter]</code></a></h4> <div class="paragraph"> <p>Sets a counter, like the <code>p4 counter [counter] [value]</code> command.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_36"><a class="link" href="#_request_url_path_parameters_36">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">counter</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The counter name.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_38"><a class="link" href="#_request_headers_38">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_8"><a class="link" href="#_request_body_json_8">Request Body JSON</a></h5> <div class="paragraph"> <p>The request body is a JSON object with a <code>value</code> property.</p> </div> <div class="paragraph"> <p>For example:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "value": "123" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_response_headers_38"><a class="link" href="#_response_headers_38">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_18"><a class="link" href="#_ruby_client_18">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#set_counter-instance_method"><code>HelixWebServicesClient#set_counter</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="post_p4_vX_counters_counter"><a class="link" href="#post_p4_vX_counters_counter"><code>POST /p4/v[api]/counters/[counter]/increment</code></a></h4> <div class="paragraph"> <p>Increments a numerical counter, similar to the <code>p4 counter -i</code> command.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_37"><a class="link" href="#_request_url_path_parameters_37">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">counter</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The name of the counter</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_39"><a class="link" href="#_request_headers_39">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_39"><a class="link" href="#_response_headers_39">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_19"><a class="link" href="#_ruby_client_19">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#increment_counter-instance_method"><code>HelixWebServicesClient#increment_counter</code></a></p> </div> </div> <div class="sect4"> <h5 id="delete_p4_vX_counters_counter"><a class="link" href="#delete_p4_vX_counters_counter"><code>DELETE /p4/v[api]/counters/[counter]</code></a></h5> <div class="paragraph"> <p>Removes the counter specification, similar to the <code>p4 counter -d</code> command.</p> </div> <div class="sect5"> <h6 id="_request_url_path_parameters_38"><a class="link" href="#_request_url_path_parameters_38">Request URL Path Parameters</a></h6> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">counter</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The name of the counter</p></td> </tr> </tbody> </table> </div> </div> <div class="sect4"> <h5 id="_request_headers_40"><a class="link" href="#_request_headers_40">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_40"><a class="link" href="#_response_headers_40">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_20"><a class="link" href="#_ruby_client_20">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#delete_counter-instance_method"><code>HelixWebServicesClient#delete_counter</code></a></p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_depots"><a class="link" href="#_helix_versioning_engine_depots">Helix Versioning Engine Depots</a></h3> <div class="sect3"> <h4 id="get_p4_vX_depots"><a class="link" href="#get_p4_vX_depots"><code>GET /p4/v[api]/depots</code></a></h4> <div class="paragraph"> <p>Lists available depots in the system. The resources of this list are summaries of depots in the system.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_39"><a class="link" href="#_request_url_path_parameters_39">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_41"><a class="link" href="#_request_headers_41">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_41"><a class="link" href="#_response_headers_41">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_21"><a class="link" href="#_response_body_json_21">Response Body JSON</a></h5> <div class="paragraph"> <p>The values of this method are based on the result of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_depots.html"><code>p4 -ztag depots</code></a> command. For more field information refer to the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_depots.html">command reference</a>.</p> </div> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>An example response body might look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "name": "depot", "time": "1437690306", "type": "local", "map": "depot/...", "desc": "Default depot" }, { "name": "stream-test", "time": "1437690307", "type": "stream", "map": "depot/...", "desc": "A test depot\n" } ]</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_21"><a class="link" href="#_ruby_client_21">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#depots-instance_method"><code>HelixWebServicesClient#depots</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="post_p4_vX_depots"><a class="link" href="#post_p4_vX_depots"><code>POST /p4/v[api]/depots</code></a></h4> <div class="paragraph"> <p>Creates a new depot specification, like the <code>p4 depot</code> command.</p> </div> <div class="paragraph"> <p>There are no other parameters to this method.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_40"><a class="link" href="#_request_url_path_parameters_40">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_42"><a class="link" href="#_request_headers_42">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_9"><a class="link" href="#_request_body_json_9">Request Body JSON</a></h5> <div class="paragraph"> <p>Properties of the JSON object are the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_depot.html">p4 depot</a> command.</p> </div> <div class="paragraph"> <p>For example:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Depot": "new_depot", "Description": "A new depot for stuff", "Type": "local", "Map": "new_depot/..." }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_response_headers_42"><a class="link" href="#_response_headers_42">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_22"><a class="link" href="#_ruby_client_22">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#create_depot-instance_method"><code>HelixWebServicesClient#create_depot</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="get_p4_vX_depots_depot"><a class="link" href="#get_p4_vX_depots_depot"><code>GET /p4/v[api]/depots/[depot]</code></a></h4> <div class="paragraph"> <p>Return depot details, similar to the <code>p4 depot -o</code> command.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_41"><a class="link" href="#_request_url_path_parameters_41">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">depot</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The depot name.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_43"><a class="link" href="#_request_headers_43">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_43"><a class="link" href="#_response_headers_43">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_data_4"><a class="link" href="#_response_data_4">Response Data</a></h5> <div class="paragraph"> <p>Returns the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_depot.html"><code>p4 -ztag depot [depot name</a></code>] command. For more information, see the command reference. The main difference between the details and list view is the inclusion of the View field.</p> </div> </div> <div class="sect4"> <h5 id="_example_json_response_4"><a class="link" href="#_example_json_response_4">Example JSON Response</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Depot": "depot", "Date": "2015/07/23 15:25:06", "Description": "Default depot\n", "Type": "local", "Map": "depot/..." }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_23"><a class="link" href="#_ruby_client_23">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#depot-instance_method"><code>HelixWebServicesClient#depot</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="patch_p4_vX_depots_depot"><a class="link" href="#patch_p4_vX_depots_depot"><code>PATCH /p4/v[api]/depots/[depot]</code></a></h4> <div class="paragraph"> <p>Update depot specifications, similar to the <code>p4 depot</code> command. Only the specified parameters in the body will be changed.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_42"><a class="link" href="#_request_url_path_parameters_42">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">depot</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The name of the depot</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_44"><a class="link" href="#_request_headers_44">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_10"><a class="link" href="#_request_body_json_10">Request Body JSON</a></h5> <div class="paragraph"> <p>A single JSON object containing form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_depot.html"><code>p4 -ztag depot [depot name</a></code>] command.</p> </div> </div> <div class="sect4"> <h5 id="_response_headers_44"><a class="link" href="#_response_headers_44">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_example_json_request_body_3"><a class="link" href="#_example_json_request_body_3">Example JSON Request Body</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Description": "The updated new-depot description.\n" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_24"><a class="link" href="#_ruby_client_24">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#update_depot-instance_method"><code>HelixWebServicesClient#update_depot</code></a></p> </div> </div> <div class="sect4"> <h5 id="delete_p4_vX_depots_depot"><a class="link" href="#delete_p4_vX_depots_depot"><code>DELETE /p4/v[api]/depots/[depot]</code></a></h5> <div class="paragraph"> <p>Removes the depot specification, similar to the <code>p4 depot -d</code> command.</p> </div> <div class="sect5"> <h6 id="_request_url_path_parameters_43"><a class="link" href="#_request_url_path_parameters_43">Request URL Path Parameters</a></h6> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">depot</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The name of the depot</p></td> </tr> </tbody> </table> </div> </div> <div class="sect4"> <h5 id="_request_headers_45"><a class="link" href="#_request_headers_45">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_45"><a class="link" href="#_response_headers_45">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_25"><a class="link" href="#_ruby_client_25">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#delete_depot-instance_method"><code>HelixWebServicesClient#delete_depot</code></a></p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_files"><a class="link" href="#_helix_versioning_engine_files">Helix Versioning Engine Files</a></h3> <div class="sect3"> <h4 id="get_p4_vX_files"><a class="link" href="#get_p4_vX_files"><code>GET /p4/v[api]/files/[path]</code></a></h4> <div class="paragraph"> <p>Lists file information in the system. Responses are a combination of the output of three different common <code>p4</code> commands: <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_depots.html"><code>p4 -ztag depots</code></a>, <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_dirs.html"><code>p4 -ztag dirs</code></a>, and <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_files.html"><code>p4 -ztag files</code></a>. We only list file information about the <em>latest</em> version of files. Files whose latest version is deleted, are not listed in the output.</p> </div> <div class="admonitionblock warning"> <table> <tr> <td class="icon"> <div class="title">Warning</div> </td> <td class="content"> While you can retrieve the contents of files by specifying files instead of directories with the <code>path</code> parameter, understand this will very likely fail with large files. By default, the system is set up with a 60 second timeout, and large files will likely take longer than that to transfer. For file operations, especially for large files, you should consider using the P4API, and managing a local Helix Versioning Engine client workspace directly to the Helix Versioning Engine. Helix Web Services is intended for metadata-oriented operations. </td> </tr> </table> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_44"><a class="link" href="#_request_url_path_parameters_44">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 33%;"> <col style="width: 33%;"> <col style="width: 33%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Required</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>path</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">A path-like string to a depot or directory that contains other directories or files. Do not include wildcards.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_46"><a class="link" href="#_request_headers_46">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_46"><a class="link" href="#_response_headers_46">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_22"><a class="link" href="#_response_body_json_22">Response Body JSON</a></h5> <div class="paragraph"> <p>Responses are a combination of the output of three different common <code>p4</code> commands: <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_depots.html"><code>p4 -ztag depots</code></a>, <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_dirs.html"><code>p4 -ztag dirs</code></a>, and <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_files.html"><code>p4 -ztag files</code></a>.</p> </div> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>An example response body might look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "depotFile": "//depot/dev/Experimental/new_file_RQTWSTFB", "rev": "1", "change": "190", "action": "add", "type": "text", "time": "1438031186" }, { "dir": "//depot/dev/Experimental/subdir" } ]</code></pre> </div> </div> <div class="paragraph"> <p>If you don’t include a path, you’ll end up with a list of depots, which looks like this:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "name": "depot", "time": "1437690306", "type": "local", "map": "depot/...", "desc": "Default depot" }, { "name": "stream-test", "time": "1437690307", "type": "stream", "map": "depot/...", "desc": "A test depot\n" } ]</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_26"><a class="link" href="#_ruby_client_26">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#files-instance_method"><code>HelixWebServicesClient#files</code></a></p> </div> <div class="paragraph"> <p>Recall that this method will return an <code>OpenModel</code>, that can assist in matching the different fields:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">results = client.files results.concat(client.files('//depot/dir') names = results.map(&:name_or_dir_or_depot_file) .map{ |x| x.split('/').last }</code></pre> </div> </div> </div> </div> <div class="sect3"> <h4 id="patch_p4_vX_files"><a class="link" href="#patch_p4_vX_files"><code>PATCH /p4/v[api]/files/[path]</code></a></h4> <div class="paragraph"> <p>Provides a means for uploading content to a particular file or directory. This is a simplification of the <a href="#post_p4_vX_changes"><code>POST /p4/v[api]/changes</code></a> method, where action is always <code>upload</code> on all files.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_45"><a class="link" href="#_request_url_path_parameters_45">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 33%;"> <col style="width: 33%;"> <col style="width: 33%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Required</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>path</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">A path-like string to a depot or directory that contains other directories or files. Do not include wildcards.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_47"><a class="link" href="#_request_headers_47">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_json_body_5"><a class="link" href="#_request_json_body_5">Request JSON Body</a></h5> <div class="paragraph"> <p>The Request JSON is an object with the following top-level parameters:</p> </div> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 33%;"> <col style="width: 33%;"> <col style="width: 33%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Property</th> <th class="tableblock halign-left valign-top">Required</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Description</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">A text field describing the new file changes</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Files</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">For multiple files, this is an array of objects, each containing the same <code>DepotFile</code> and <code>Content</code> data you would use as if this were a single file upload.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>DepotFile</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If this is a single file upload, this is the file path, relative to the <code>path</code> parameter in the URL.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If this is a single file upload, this is the base64-encoded content</p></td> </tr> </tbody> </table> <div class="paragraph"> <p>For example, here is a request uploading a single file with no URL <code>path</code> parameter in the request:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "DepotFile": "depot/dir/complete/path", "Content": "SSdtIGEgbGl0dGxlIHRlYXBvdAo=" }</code></pre> </div> </div> <div class="paragraph"> <p>And here’a request uploading two files, expecting the <code>path</code> parameter in the request URL to be set to <code>depot/dir/complete</code>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Files": [ { "DepotFile": "README", "Content": "SSdtIGEgbGl0dGxlIHRlYXBvdAo=" }, { "DepotFile": "test.txt", "Content": "SSdtIGEgbGl0dGxlIHRlYXBvdAo=" } ] }</code></pre> </div> </div> <div class="paragraph"> <p>Both of the above requests would upload files to the same directory location.</p> </div> </div> <div class="sect4"> <h5 id="_response_headers_47"><a class="link" href="#_response_headers_47">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_json_body_7"><a class="link" href="#_response_json_body_7">Response JSON Body</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> </div> <div class="sect4"> <h5 id="_ruby_client_27"><a class="link" href="#_ruby_client_27">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#upload_files-instance_method"><code>HelixWebServicesClient#upload_files</code></a>, or <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#upload_file-instance_method"><code>HelixWebServicesClient#upload_file</code></a>.</p> </div> </div> </div> <div class="sect3"> <h4 id="delete_p4_vX_files"><a class="link" href="#delete_p4_vX_files"><code>DELETE /p4/v[api]/files/[path]</code></a></h4> <div class="paragraph"> <p>Deletes a file if it exists in the system. This will mark the 'head' revision of the file as deleted. For more information, see the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_delete.html"><code>p4 delete</code></a> command reference.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_46"><a class="link" href="#_request_url_path_parameters_46">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 33%;"> <col style="width: 33%;"> <col style="width: 33%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Required</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>path</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">A path-like string to a depot or directory that contains other directories or files. Do not include wildcards.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_48"><a class="link" href="#_request_headers_48">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_48"><a class="link" href="#_response_headers_48">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_json_body_8"><a class="link" href="#_response_json_body_8">Response JSON Body</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> </div> <div class="sect4"> <h5 id="_ruby_client_28"><a class="link" href="#_ruby_client_28">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#delete_file-instance_method"><code>HelixWebServicesClient#delete_file</code></a></p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_groups"><a class="link" href="#_helix_versioning_engine_groups">Helix Versioning Engine Groups</a></h3> <div class="sect3"> <h4 id="get_p4_vX_groups"><a class="link" href="#get_p4_vX_groups"><code>GET /p4/v[api]/groups</code></a></h4> <div class="paragraph"> <p>Lists available groups in the system. The resources of this list are summaries of groups in the system.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_47"><a class="link" href="#_request_url_path_parameters_47">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_49"><a class="link" href="#_request_headers_49">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_49"><a class="link" href="#_response_headers_49">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_23"><a class="link" href="#_response_body_json_23">Response Body JSON</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>The values of this method are based on the result of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_groups.html"><code>p4 -ztag groups</code></a> command. The output of this command is quite a bit different from typical listing queries.</p> </div> <div class="paragraph"> <p>For example, here’s a listing that includes one group with two users:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "user": "mmustermann", "group": "test_MUFFUMMY", "isSubGroup": "0", "isOwner": "0", "isUser": "1", "maxResults": "0", "maxScanRows": "0", "maxLockTime": "0", "timeout": "43200", "passTimeout": "0" }, { "user": "super", "group": "test_MUFFUMMY", "isSubGroup": "0", "isOwner": "0", "isUser": "1", "maxResults": "0", "maxScanRows": "0", "maxLockTime": "0", "timeout": "43200", "passTimeout": "0" } ]</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_29"><a class="link" href="#_ruby_client_29">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#groups-instance_method"><code>HelixWebServicesClient#groups</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="post_p4_vX_groups"><a class="link" href="#post_p4_vX_groups"><code>POST /p4/v[api]/groups</code></a></h4> <div class="paragraph"> <p>Creates a new group specification, like the <code>p4 group</code> command.</p> </div> <div class="paragraph"> <p>There are no other parameters to this method.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_48"><a class="link" href="#_request_url_path_parameters_48">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_50"><a class="link" href="#_request_headers_50">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_11"><a class="link" href="#_request_body_json_11">Request Body JSON</a></h5> <div class="paragraph"> <p>Properties of the JSON object are the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_group.html">p4 group</a> command.</p> </div> <div class="paragraph"> <p>For example:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Group": "new_group_id", "Users": ["jdoe", "mmustermann"] }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_response_headers_50"><a class="link" href="#_response_headers_50">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_30"><a class="link" href="#_ruby_client_30">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#create_group-instance_method"><code>HelixWebServicesClient#create_group</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="get_p4_vX_groups_group"><a class="link" href="#get_p4_vX_groups_group"><code>GET /p4/v[api]/groups/[group]</code></a></h4> <div class="paragraph"> <p>Return group details, similar to the <code>p4 group -o</code> command.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_49"><a class="link" href="#_request_url_path_parameters_49">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">group</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The group name.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_51"><a class="link" href="#_request_headers_51">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_51"><a class="link" href="#_response_headers_51">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_data_5"><a class="link" href="#_response_data_5">Response Data</a></h5> <div class="paragraph"> <p>Returns the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_group.html"><code>p4 -ztag group [group name</a></code>] command. For more information, see the command reference.</p> </div> <div class="paragraph"> <p>Please note that the way 'unset' is described in this output is different from the listing data.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Group": "test_MUFFUMMY", "MaxResults": "unset", "MaxScanRows": "unset", "MaxLockTime": "unset", "Timeout": "43200", "PasswordTimeout": "unset", "Users": [ "mmustermann", "super" ] }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_31"><a class="link" href="#_ruby_client_31">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#group-instance_method"><code>HelixWebServicesClient#group</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="patch_p4_vX_groups_group"><a class="link" href="#patch_p4_vX_groups_group"><code>PATCH /p4/v[api]/groups/[group]</code></a></h4> <div class="paragraph"> <p>Update group specifications, similar to the <code>p4 group</code> command. Only the specified parameters in the body will be changed.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_50"><a class="link" href="#_request_url_path_parameters_50">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">group</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The name of the group</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_52"><a class="link" href="#_request_headers_52">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_52"><a class="link" href="#_response_headers_52">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_12"><a class="link" href="#_request_body_json_12">Request Body JSON</a></h5> <div class="paragraph"> <p>A single JSON object containing form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_group.html"><code>p4 -ztag group [group name</a></code>] command.</p> </div> <div class="paragraph"> <p>An example updating the list of users:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Users": ["jdoe", "mmustermann", "saustin"] }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_32"><a class="link" href="#_ruby_client_32">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#update_group-instance_method"><code>HelixWebServicesClient#update_group</code></a></p> </div> </div> <div class="sect4"> <h5 id="delete_p4_vX_groups_group"><a class="link" href="#delete_p4_vX_groups_group"><code>DELETE /p4/v[api]/groups/[group]</code></a></h5> <div class="paragraph"> <p>Removes the group specification, similar to the <code>p4 group -d</code> command.</p> </div> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_51"><a class="link" href="#_request_url_path_parameters_51">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">group</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The name of the group</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_53"><a class="link" href="#_request_headers_53">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_53"><a class="link" href="#_response_headers_53">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_33"><a class="link" href="#_ruby_client_33">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#delete_group-instance_method"><code>HelixWebServicesClient#delete_group</code></a></p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_jobs"><a class="link" href="#_helix_versioning_engine_jobs">Helix Versioning Engine Jobs</a></h3> <div class="sect3"> <h4 id="get_p4_vX_jobs"><a class="link" href="#get_p4_vX_jobs"><code>GET /p4/v[api]/jobs</code></a></h4> <div class="paragraph"> <p>Lists available jobs in the system. The resources of this list are summaries of jobs in the system.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_52"><a class="link" href="#_request_url_path_parameters_52">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_54"><a class="link" href="#_request_headers_54">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_54"><a class="link" href="#_response_headers_54">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_24"><a class="link" href="#_response_body_json_24">Response Body JSON</a></h5> <div class="paragraph"> <p>The values of this method are based on the result of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_jobs.html"><code>p4 -ztag jobs</code></a> command. For more field information refer to the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_jobs.html">command reference</a>.</p> </div> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>An example response body might look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "Job": "job000001", "Status": "open", "User": "jdoe", "Date": "2015/07/28 13:18:20", "Description": "Test Job UVUCBXOS\n" } ]</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_34"><a class="link" href="#_ruby_client_34">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#jobs-instance_method"><code>HelixWebServicesClient#jobs</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="post_p4_vX_jobs"><a class="link" href="#post_p4_vX_jobs"><code>POST /p4/v[api]/jobs</code></a></h4> <div class="paragraph"> <p>Creates a new job specification, like the <code>p4 job</code> command.</p> </div> <div class="paragraph"> <p>There are no other parameters to this method.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_53"><a class="link" href="#_request_url_path_parameters_53">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_55"><a class="link" href="#_request_headers_55">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_13"><a class="link" href="#_request_body_json_13">Request Body JSON</a></h5> <div class="paragraph"> <p>Properties of the JSON object are the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_job.html">p4 job</a> command.</p> </div> <div class="paragraph"> <p>For example:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Job": "new", "Description": "A new job for stuff", "Status": "open" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_response_headers_55"><a class="link" href="#_response_headers_55">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_35"><a class="link" href="#_ruby_client_35">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#create_job-instance_method"><code>HelixWebServicesClient#create_job</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="get_p4_vX_jobs_job"><a class="link" href="#get_p4_vX_jobs_job"><code>GET /p4/v[api]/jobs/[job]</code></a></h4> <div class="paragraph"> <p>Return job details, similar to the <code>p4 job -o</code> command.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_54"><a class="link" href="#_request_url_path_parameters_54">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">job</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The job name.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_56"><a class="link" href="#_request_headers_56">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_56"><a class="link" href="#_response_headers_56">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_data_6"><a class="link" href="#_response_data_6">Response Data</a></h5> <div class="paragraph"> <p>Returns the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_job.html"><code>p4 -ztag job [job name</a></code>] command. For more information, see the command reference. The main difference between the details and list view is the inclusion of the View field.</p> </div> </div> <div class="sect4"> <h5 id="_example_json_response_5"><a class="link" href="#_example_json_response_5">Example JSON Response</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Job": "job000001", "Status": "open", "User": "jdoe", "Date": "2015/07/28 13:18:20", "Description": "Test Job UVUCBXOS\n" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_36"><a class="link" href="#_ruby_client_36">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#job-instance_method"><code>HelixWebServicesClient#job</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="patch_p4_vX_jobs_job"><a class="link" href="#patch_p4_vX_jobs_job"><code>PATCH /p4/v[api]/jobs/[job]</code></a></h4> <div class="paragraph"> <p>Update job specifications, similar to the <code>p4 job</code> command. Only the specified parameters in the body will be changed.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_55"><a class="link" href="#_request_url_path_parameters_55">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">job</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The name of the job</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_57"><a class="link" href="#_request_headers_57">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_14"><a class="link" href="#_request_body_json_14">Request Body JSON</a></h5> <div class="paragraph"> <p>A single JSON object containing form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_job.html"><code>p4 -ztag job [job name</a></code>] command.</p> </div> </div> <div class="sect4"> <h5 id="_response_headers_57"><a class="link" href="#_response_headers_57">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_example_json_request_body_4"><a class="link" href="#_example_json_request_body_4">Example JSON Request Body</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Description": "The updated job description.\n" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_37"><a class="link" href="#_ruby_client_37">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#update_job-instance_method"><code>HelixWebServicesClient#update_job</code></a></p> </div> </div> <div class="sect4"> <h5 id="delete_p4_vX_jobs_job"><a class="link" href="#delete_p4_vX_jobs_job"><code>DELETE /p4/v[api]/jobs/[job]</code></a></h5> <div class="paragraph"> <p>Removes the job specification, similar to the <code>p4 job -d</code> command.</p> </div> <div class="sect5"> <h6 id="_request_url_path_parameters_56"><a class="link" href="#_request_url_path_parameters_56">Request URL Path Parameters</a></h6> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">job</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The name of the job</p></td> </tr> </tbody> </table> </div> </div> <div class="sect4"> <h5 id="_request_headers_58"><a class="link" href="#_request_headers_58">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_58"><a class="link" href="#_response_headers_58">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_38"><a class="link" href="#_ruby_client_38">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#delete_job-instance_method"><code>HelixWebServicesClient#delete_job</code></a></p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_labels"><a class="link" href="#_helix_versioning_engine_labels">Helix Versioning Engine Labels</a></h3> <div class="sect3"> <h4 id="get_p4_vX_labels"><a class="link" href="#get_p4_vX_labels"><code>GET /p4/v[api]/labels</code></a></h4> <div class="paragraph"> <p>Lists available labels in the system. The resources of this list are summaries of labels in the system.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_57"><a class="link" href="#_request_url_path_parameters_57">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_59"><a class="link" href="#_request_headers_59">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_59"><a class="link" href="#_response_headers_59">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_25"><a class="link" href="#_response_body_json_25">Response Body JSON</a></h5> <div class="paragraph"> <p>The values of this method are based on the result of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_labels.html"><code>p4 -ztag labels</code></a> command. For more field information refer to the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_labels.html">command reference</a>.</p> </div> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>An example response body might look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "label": "test-label", "Update": "1438120994", "Access": "1438120994", "Owner": "", "Options": "unlocked noautoreload", "Description": "The label for testing\n" } ]</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_39"><a class="link" href="#_ruby_client_39">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#labels-instance_method"><code>HelixWebServicesClient#labels</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="post_p4_vX_labels"><a class="link" href="#post_p4_vX_labels"><code>POST /p4/v[api]/labels</code></a></h4> <div class="paragraph"> <p>Creates a new label specification, like the <code>p4 label</code> command.</p> </div> <div class="paragraph"> <p>There are no other parameters to this method.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_58"><a class="link" href="#_request_url_path_parameters_58">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_60"><a class="link" href="#_request_headers_60">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_15"><a class="link" href="#_request_body_json_15">Request Body JSON</a></h5> <div class="paragraph"> <p>Properties of the JSON object are the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_label.html">p4 label</a> command.</p> </div> <div class="paragraph"> <p>For example:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Label": "new_label", "Description": "A new label for stuff", "View": ["//depot/..."] }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_response_headers_60"><a class="link" href="#_response_headers_60">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_40"><a class="link" href="#_ruby_client_40">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#create_label-instance_method"><code>HelixWebServicesClient#create_label</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="get_p4_vX_labels_label"><a class="link" href="#get_p4_vX_labels_label"><code>GET /p4/v[api]/labels/[label]</code></a></h4> <div class="paragraph"> <p>Return label details, similar to the <code>p4 label -o</code> command.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_59"><a class="link" href="#_request_url_path_parameters_59">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>label</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The label name.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_61"><a class="link" href="#_request_headers_61">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_61"><a class="link" href="#_response_headers_61">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_data_7"><a class="link" href="#_response_data_7">Response Data</a></h5> <div class="paragraph"> <p>Returns the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_label.html"><code>p4 -ztag label [label name</a></code>] command. For more information, see the command reference. The main difference between the details and list view is the inclusion of the View field.</p> </div> </div> <div class="sect4"> <h5 id="_example_json_response_6"><a class="link" href="#_example_json_response_6">Example JSON Response</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Label": "test-label", "Update": "2015/07/28 15:03:14", "Access": "2015/07/28 15:03:14", "Description": "The label for testing\n", "Options": "unlocked noautoreload", "View": [ "//depot/..." ] }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_41"><a class="link" href="#_ruby_client_41">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#label-instance_method"><code>HelixWebServicesClient#label</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="patch_p4_vX_labels_label"><a class="link" href="#patch_p4_vX_labels_label"><code>PATCH /p4/v[api]/labels/[label]</code></a></h4> <div class="paragraph"> <p>Update label specifications, similar to the <code>p4 label</code> command. Only the specified parameters in the body will be changed.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_60"><a class="link" href="#_request_url_path_parameters_60">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>label</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The name of the label</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_62"><a class="link" href="#_request_headers_62">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_16"><a class="link" href="#_request_body_json_16">Request Body JSON</a></h5> <div class="paragraph"> <p>A single JSON object containing form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_label.html"><code>p4 -ztag label [label name</a></code>] command.</p> </div> </div> <div class="sect4"> <h5 id="_response_headers_62"><a class="link" href="#_response_headers_62">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_example_json_request_body_5"><a class="link" href="#_example_json_request_body_5">Example JSON Request Body</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Description": "The updated new-label description.\n" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_42"><a class="link" href="#_ruby_client_42">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#update_label-instance_method"><code>HelixWebServicesClient#update_label</code></a></p> </div> </div> <div class="sect4"> <h5 id="delete_p4_vX_labels_label"><a class="link" href="#delete_p4_vX_labels_label"><code>DELETE /p4/v[api]/labels/[label]</code></a></h5> <div class="paragraph"> <p>Removes the label specification, similar to the <code>p4 label -d</code> command.</p> </div> <div class="sect5"> <h6 id="_request_url_path_parameters_61"><a class="link" href="#_request_url_path_parameters_61">Request URL Path Parameters</a></h6> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>label</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The name of the label</p></td> </tr> </tbody> </table> </div> </div> <div class="sect4"> <h5 id="_request_headers_63"><a class="link" href="#_request_headers_63">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_63"><a class="link" href="#_response_headers_63">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_43"><a class="link" href="#_ruby_client_43">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#delete_label-instance_method"><code>HelixWebServicesClient#delete_label</code></a></p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_login"><a class="link" href="#_helix_versioning_engine_login">Helix Versioning Engine Login</a></h3> <div class="sect3"> <h4 id="post_p4_vX_login"><a class="link" href="#post_p4_vX_login"><code>POST /p4/v[api]/login</code></a></h4> <div class="paragraph"> <p>Generates a host-unlocked Perforce login token for the server.</p> </div> <div class="paragraph"> <p>This is useful in cases where the authentication source is not the same as the p4d instance you operate most operations as. If you happen to have the same authentication source, you can always run this; you’ll pretty much just get the same ticket.</p> </div> <div class="sect4"> <h5 id="_request_headers_64"><a class="link" href="#_request_headers_64">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code>, <code>text/plain</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_17"><a class="link" href="#_request_body_json_17">Request Body JSON</a></h5> <div class="paragraph"> <p>A single JSON object with the following keys</p> </div> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Property</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>user</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine login</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>password</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The password for the particular user</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_64"><a class="link" href="#_response_headers_64">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_2"><a class="link" href="#_response_body_2">Response Body</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>Example response:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "ticket": "16A76F005802E742E834163A22A4DED4" }</code></pre> </div> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_protections"><a class="link" href="#_helix_versioning_engine_protections">Helix Versioning Engine Protections</a></h3> <div class="sect3"> <h4 id="get_p4_vX_protections"><a class="link" href="#get_p4_vX_protections"><code>GET /p4/v[api]/protections</code></a></h4> <div class="paragraph"> <p>Lists available protections in the system. The resources of this list are summaries of protections in the system.</p> </div> <div class="paragraph"> <p>This method likely requires superuser access.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_62"><a class="link" href="#_request_url_path_parameters_62">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_65"><a class="link" href="#_request_headers_65">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_65"><a class="link" href="#_response_headers_65">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_26"><a class="link" href="#_response_body_json_26">Response Body JSON</a></h5> <div class="paragraph"> <p>The values of this method are based on the result of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_protect.html"><code>p4 -ztag protect -o</code></a> command.</p> </div> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>An example response body might look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Protections": [ "write user * * //...", "super user super * //..." ] }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_44"><a class="link" href="#_ruby_client_44">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#protections-instance_method"><code>HelixWebServicesClient#protections</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="post_p4_vX_protections"><a class="link" href="#post_p4_vX_protections"><code>POST /p4/v[api]/protections</code></a></h4> <div class="paragraph"> <p>Update the protections table.</p> </div> <div class="paragraph"> <p>This method likely requires superuser access.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_63"><a class="link" href="#_request_url_path_parameters_63">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_66"><a class="link" href="#_request_headers_66">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_18"><a class="link" href="#_request_body_json_18">Request Body JSON</a></h5> <div class="paragraph"> <p>Properties of the JSON object are the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_protect.html"><code>p4 protect</code></a> command.</p> </div> <div class="paragraph"> <p>For example:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Protections": [ "write user * * //...", "super user super * //...", "super user jdoe * //..." ] }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_response_headers_66"><a class="link" href="#_response_headers_66">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_45"><a class="link" href="#_ruby_client_45">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#create_label-instance_method"><code>HelixWebServicesClient#create_label</code></a></p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_servers"><a class="link" href="#_helix_versioning_engine_servers">Helix Versioning Engine Servers</a></h3> <div class="sect3"> <h4 id="get_p4_vX_servers"><a class="link" href="#get_p4_vX_servers"><code>GET /p4/v[api]/servers</code></a></h4> <div class="paragraph"> <p>Lists available servers in the system. The resources of this list are summaries of servers in the system.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_64"><a class="link" href="#_request_url_path_parameters_64">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_67"><a class="link" href="#_request_headers_67">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_67"><a class="link" href="#_response_headers_67">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_27"><a class="link" href="#_response_body_json_27">Response Body JSON</a></h5> <div class="paragraph"> <p>The values of this method are based on the result of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_servers.html"><code>p4 -ztag servers</code></a> command. For more field information refer to the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_servers.html">command reference</a>.</p> </div> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>An example response body might look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "ServerID": "master-1666", "Name": "master-1666", "Address": "", "Type": "server", "Services": "commit-server", "Description": "Created by su-superuser.\n" }, { "ServerID": "buildfarm", "Name": "buildfarm", "Address": "", "Type": "server", "Services": "db-read,db-replication,bound-clients,file-replication", "Description": "Created by su-superuser.\n" } ]</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_46"><a class="link" href="#_ruby_client_46">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#servers-instance_method"><code>HelixWebServicesClient#servers</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="post_p4_vX_servers"><a class="link" href="#post_p4_vX_servers"><code>POST /p4/v[api]/servers</code></a></h4> <div class="paragraph"> <p>Creates a new server specification, like the <code>p4 server</code> command.</p> </div> <div class="paragraph"> <p>There are no other parameters to this method.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_65"><a class="link" href="#_request_url_path_parameters_65">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_68"><a class="link" href="#_request_headers_68">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_19"><a class="link" href="#_request_body_json_19">Request Body JSON</a></h5> <div class="paragraph"> <p>Properties of the JSON object are the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_server.html">p4 server</a> command.</p> </div> <div class="paragraph"> <p>For example:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "ServerID": "new_server", "Description": "A new server for stuff", "Type": "server", "Services": "standard" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_response_headers_68"><a class="link" href="#_response_headers_68">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_47"><a class="link" href="#_ruby_client_47">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#create_server-instance_method"><code>HelixWebServicesClient#create_server</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="get_p4_vX_servers_server"><a class="link" href="#get_p4_vX_servers_server"><code>GET /p4/v[api]/servers/[server]</code></a></h4> <div class="paragraph"> <p>Return server details, similar to the <code>p4 server -o</code> command.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_66"><a class="link" href="#_request_url_path_parameters_66">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">server</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The server name.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_69"><a class="link" href="#_request_headers_69">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_69"><a class="link" href="#_response_headers_69">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_data_8"><a class="link" href="#_response_data_8">Response Data</a></h5> <div class="paragraph"> <p>Returns the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_server.html"><code>p4 -ztag server [server name</a></code>] command. For more information, see the command reference. The main difference between the details and list view is the inclusion of the View field.</p> </div> </div> <div class="sect4"> <h5 id="_example_json_response_7"><a class="link" href="#_example_json_response_7">Example JSON Response</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "ServerID": "master-1666", "Type": "server", "Name": "master-1666", "Services": "commit-server", "Description": "Created by su-jsmith.\n" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_48"><a class="link" href="#_ruby_client_48">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#server-instance_method"><code>HelixWebServicesClient#server</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="patch_p4_vX_servers_server"><a class="link" href="#patch_p4_vX_servers_server"><code>PATCH /p4/v[api]/servers/[server]</code></a></h4> <div class="paragraph"> <p>Update server specifications, similar to the <code>p4 server</code> command. Only the specified parameters in the body will be changed.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_67"><a class="link" href="#_request_url_path_parameters_67">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">server</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The name of the server</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_70"><a class="link" href="#_request_headers_70">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_20"><a class="link" href="#_request_body_json_20">Request Body JSON</a></h5> <div class="paragraph"> <p>A single JSON object containing form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_server.html"><code>p4 -ztag server [server name</a></code>] command.</p> </div> </div> <div class="sect4"> <h5 id="_response_headers_70"><a class="link" href="#_response_headers_70">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_example_json_request_body_6"><a class="link" href="#_example_json_request_body_6">Example JSON Request Body</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Description": "The updated new-server description.\n" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_49"><a class="link" href="#_ruby_client_49">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#update_server-instance_method"><code>HelixWebServicesClient#update_server</code></a></p> </div> </div> <div class="sect4"> <h5 id="delete_p4_vX_servers_server"><a class="link" href="#delete_p4_vX_servers_server"><code>DELETE /p4/v[api]/servers/[server]</code></a></h5> <div class="paragraph"> <p>Removes the server specification, similar to the <code>p4 server -d</code> command.</p> </div> <div class="sect5"> <h6 id="_request_url_path_parameters_68"><a class="link" href="#_request_url_path_parameters_68">Request URL Path Parameters</a></h6> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">server</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The name of the server</p></td> </tr> </tbody> </table> </div> </div> <div class="sect4"> <h5 id="_request_headers_71"><a class="link" href="#_request_headers_71">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_71"><a class="link" href="#_response_headers_71">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_50"><a class="link" href="#_ruby_client_50">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#delete_server-instance_method"><code>HelixWebServicesClient#delete_server</code></a></p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_streams"><a class="link" href="#_helix_versioning_engine_streams">Helix Versioning Engine Streams</a></h3> <div class="sect3"> <h4 id="get_p4_vX_streams"><a class="link" href="#get_p4_vX_streams"><code>GET /p4/v[api]/streams</code></a></h4> <div class="paragraph"> <p>Lists available streams in the system. The resources of this list are summaries of streams in the system.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_69"><a class="link" href="#_request_url_path_parameters_69">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_72"><a class="link" href="#_request_headers_72">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_72"><a class="link" href="#_response_headers_72">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_28"><a class="link" href="#_response_body_json_28">Response Body JSON</a></h5> <div class="paragraph"> <p>The values of this method are based on the result of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_streams.html"><code>p4 -ztag streams</code></a> command. For more field information refer to the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_streams.html">command reference</a>.</p> </div> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>An example response body might look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "Stream": "//stream-test/main-TKOMGMSZ", "Update": "1437761647", "Access": "1437761647", "Owner": "jdoe", "Name": "main-TKOMGMSZ", "Parent": "none", "Type": "mainline", "desc": "Test stream main-TKOMGMSZ\n", "Options": "allsubmit unlocked notoparent nofromparent", "firmerThanParent": "n/a", "changeFlowsToParent": "false", "changeFlowsFromParent": "false", "baseParent": "none" } ]</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_51"><a class="link" href="#_ruby_client_51">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#streams-instance_method"><code>HelixWebServicesClient#streams</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="post_p4_vX_streams"><a class="link" href="#post_p4_vX_streams"><code>POST /p4/v[api]/streams</code></a></h4> <div class="paragraph"> <p>Creates a new stream specification, like the <code>p4 stream</code> command.</p> </div> <div class="paragraph"> <p>There are no other parameters to this method.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_70"><a class="link" href="#_request_url_path_parameters_70">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_73"><a class="link" href="#_request_headers_73">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_21"><a class="link" href="#_request_body_json_21">Request Body JSON</a></h5> <div class="paragraph"> <p>Properties of the JSON object are the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_stream.html">p4 stream</a> command.</p> </div> </div> <div class="sect4"> <h5 id="_response_headers_73"><a class="link" href="#_response_headers_73">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_example_request_json_2"><a class="link" href="#_example_request_json_2">Example Request JSON</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Stream": "//my-stream-depot/main", "Name": "my-stream-depot main", "Description": "Mainline of MyStream", "Type": "mainline", "Parent": "none", "Paths": ["share ..."], "Owner": "jdoe" }</code></pre> </div> </div> </div> </div> <div class="sect3"> <h4 id="_ruby_client_example_2"><a class="link" href="#_ruby_client_example_2">Ruby Client Example</a></h4> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">client.create_stream({ 'Stream' => '//my-stream-depot/main', 'Name' => 'my-stream-depot main', 'Description' => "Mainline of MyStream", 'Type' => 'mainline', 'Parent' => 'none', 'Paths' => ['share ...'], 'Owner' => 'jdoe' })</code></pre> </div> </div> <div class="sect4"> <h5 id="_ruby_client_52"><a class="link" href="#_ruby_client_52">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#create_stream-instance_method"><code>HelixWebServicesClient#create_stream</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="get_p4_vX_streams_stream"><a class="link" href="#get_p4_vX_streams_stream"><code>GET /p4/v[api]/streams/[stream]</code></a></h4> <div class="paragraph"> <p>Return stream details, similar to the <code>p4 stream -o</code> command.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_71"><a class="link" href="#_request_url_path_parameters_71">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">stream</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The stream path-like identifier, without the leading <code>//</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_74"><a class="link" href="#_request_headers_74">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_74"><a class="link" href="#_response_headers_74">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_data_9"><a class="link" href="#_response_data_9">Response Data</a></h5> <div class="paragraph"> <p>Returns the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_stream.html"><code>p4 -ztag stream [stream name</a></code>] command. For more information, see the command reference. The main difference between the details and list view is the inclusion of the View field.</p> </div> </div> <div class="sect4"> <h5 id="_example_json_response_8"><a class="link" href="#_example_json_response_8">Example JSON Response</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Stream": "//stream-test/main-TKOMGMSZ", "Update": "2015/07/24 11:14:07", "Access": "2015/07/24 11:14:07", "Owner": "jdoe", "Name": "main-TKOMGMSZ", "Parent": "none", "Type": "mainline", "Description": "Test stream main-TKOMGMSZ\n", "Options": "allsubmit unlocked notoparent nofromparent", "Paths": [ "share ..." ], "firmerThanParent": "n/a", "baseParent": "none" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_53"><a class="link" href="#_ruby_client_53">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#stream-instance_method"><code>HelixWebServicesClient#stream</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="patch_p4_vX_streams_stream"><a class="link" href="#patch_p4_vX_streams_stream"><code>PATCH /p4/v[api]/streams/[stream]</code></a></h4> <div class="paragraph"> <p>Update stream specifications, similar to the <code>p4 stream</code> command. Only the specified parameters in the body will be changed.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_72"><a class="link" href="#_request_url_path_parameters_72">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">stream</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The stream path-like identifier, without the leading <code>//</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_75"><a class="link" href="#_request_headers_75">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_22"><a class="link" href="#_request_body_json_22">Request Body JSON</a></h5> <div class="paragraph"> <p>A single JSON object containing form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_stream.html"><code>p4 -ztag stream [stream name</a></code>] command.</p> </div> </div> <div class="sect4"> <h5 id="_response_headers_75"><a class="link" href="#_response_headers_75">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_example_json_request_body_7"><a class="link" href="#_example_json_request_body_7">Example JSON Request Body</a></h5> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Description": "The updated my-project-main description.\n", "Owner": "saustin" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_54"><a class="link" href="#_ruby_client_54">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#update_stream-instance_method"><code>HelixWebServicesClient#update_stream</code></a></p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">client.update_stream({ "Stream" => 'my_stream_id', "Description" => "The updated my-project-main description.\n", "Owner" => "saustin" })</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="delete_p4_vX_streams_stream"><a class="link" href="#delete_p4_vX_streams_stream"><code>DELETE /p4/v[api]/streams/[stream]</code></a></h5> <div class="paragraph"> <p>Removes the stream specification, similar to the <code>p4 stream -d</code> command.</p> </div> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_73"><a class="link" href="#_request_url_path_parameters_73">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">stream</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The stream path-like identifier, without the leading <code>//</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_76"><a class="link" href="#_request_headers_76">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_76"><a class="link" href="#_response_headers_76">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_55"><a class="link" href="#_ruby_client_55">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#delete_stream-instance_method"><code>HelixWebServicesClient#delete_stream</code></a></p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_triggers"><a class="link" href="#_helix_versioning_engine_triggers">Helix Versioning Engine Triggers</a></h3> <div class="sect3"> <h4 id="get_p4_vX_triggers"><a class="link" href="#get_p4_vX_triggers"><code>GET /p4/v[api]/triggers</code></a></h4> <div class="paragraph"> <p>Lists available triggers in the system. The resources of this list are summaries of triggers in the system.</p> </div> <div class="paragraph"> <p>This method likely requires superuser access.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_74"><a class="link" href="#_request_url_path_parameters_74">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_77"><a class="link" href="#_request_headers_77">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_77"><a class="link" href="#_response_headers_77">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_29"><a class="link" href="#_response_body_json_29">Response Body JSON</a></h5> <div class="paragraph"> <p>The values of this method are based on the result of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_triggers.html"><code>p4 -ztag triggers -o</code></a> command.</p> </div> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>An example response body might look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Triggers": [ "cscheck change-submit //depot/... \"cmd %changelist%\"" ] }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_56"><a class="link" href="#_ruby_client_56">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#triggers-instance_method"><code>HelixWebServicesClient#triggers</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="post_p4_vX_triggers"><a class="link" href="#post_p4_vX_triggers"><code>POST /p4/v[api]/triggers</code></a></h4> <div class="paragraph"> <p>Update the triggers table.</p> </div> <div class="paragraph"> <p>This method likely requires superuser access.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_75"><a class="link" href="#_request_url_path_parameters_75">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_78"><a class="link" href="#_request_headers_78">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_23"><a class="link" href="#_request_body_json_23">Request Body JSON</a></h5> <div class="paragraph"> <p>Properties of the JSON object are the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_triggers.html"><code>p4 triggers</code></a> command.</p> </div> <div class="paragraph"> <p>For example:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Triggers": [ "cscheck change-submit //depot/... \"cmd %changelist%\"" ] }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_response_headers_78"><a class="link" href="#_response_headers_78">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_57"><a class="link" href="#_ruby_client_57">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#update_triggers-instance_method"><code>HelixWebServicesClient#update_triggers</code></a></p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_helix_versioning_engine_users"><a class="link" href="#_helix_versioning_engine_users">Helix Versioning Engine Users</a></h3> <div class="sect3"> <h4 id="get_p4_vX_users"><a class="link" href="#get_p4_vX_users"><code>GET /p4/v[api]/users</code></a></h4> <div class="paragraph"> <p>Lists available users in the system. The resources of this list are summaries of users in the system.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_76"><a class="link" href="#_request_url_path_parameters_76">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_79"><a class="link" href="#_request_headers_79">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_79"><a class="link" href="#_response_headers_79">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_30"><a class="link" href="#_response_body_json_30">Response Body JSON</a></h5> <div class="paragraph"> <p>The values of this method are based on the result of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_users.html"><code>p4 -ztag users</code></a> command. For more field information refer to the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_users.html">command reference</a>.</p> </div> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>An example response body might look like:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "User": "jdoe", "Update": "1437690307", "Access": "1438019139", "FullName": "John Doe", "Email": "jdoe@example.com", "Type": "standard", "Password": "enabled" }, { "User": "mmustermann", "Update": "1437690307", "Access": "1437690307", "FullName": "Max Mustermann", "Email": "max_mower_CTODZMDQ@example.com", "Type": "standard", "Password": "enabled" } ]</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_58"><a class="link" href="#_ruby_client_58">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#users-instance_method"><code>HelixWebServicesClient#users</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="post_p4_vX_users"><a class="link" href="#post_p4_vX_users"><code>POST /p4/v[api]/users</code></a></h4> <div class="paragraph"> <p>Creates a new user specification, like the <code>p4 user</code> command.</p> </div> <div class="paragraph"> <p>There are no other parameters to this method.</p> </div> <div class="paragraph"> <p>Your server permissions may vary, but this command generally requires super user access.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_77"><a class="link" href="#_request_url_path_parameters_77">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_80"><a class="link" href="#_request_headers_80">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_24"><a class="link" href="#_request_body_json_24">Request Body JSON</a></h5> <div class="paragraph"> <p>Properties of the JSON object are the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_user.html">p4 user</a> command.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "User": "new_user", "FullName": "New User", "Email": "new_user@example.com" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_response_headers_80"><a class="link" href="#_response_headers_80">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_sdk_usage"><a class="link" href="#_ruby_client_sdk_usage">Ruby Client SDK Usage</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#create_user-instance_method"><code>HelixWebServicesClient#create_user</code></a></p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">user.create_user({ "User" => "new_user", "FullName" => "New User", "Email" => "new_user@example.com" })</code></pre> </div> </div> </div> </div> <div class="sect3"> <h4 id="get_p4_vX_users_user"><a class="link" href="#get_p4_vX_users_user"><code>GET /p4/v[api]/users/[user]</code></a></h4> <div class="paragraph"> <p>Return user details, similar to the <code>p4 user -o</code> command.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_78"><a class="link" href="#_request_url_path_parameters_78">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">user</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The <code>User</code> property of the user specification (i.e., the login string).</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_81"><a class="link" href="#_request_headers_81">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_81"><a class="link" href="#_response_headers_81">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_data_10"><a class="link" href="#_response_data_10">Response Data</a></h5> <div class="paragraph"> <p>Returns the form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_user.html"><code>p4 -ztag user [user name</a></code>] command.</p> </div> <div class="paragraph"> <p>Example JSON response:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "User": "jdoe", "Type": "standard", "Email": "jdoe@example.com", "Update": "2015/07/23 15:25:07", "Access": "2015/07/27 10:53:14", "FullName": "John Doe", "AuthMethod": "perforce", "passwordChange": "2015/07/23 15:25:07" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_ruby_client_59"><a class="link" href="#_ruby_client_59">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#user_details-instance_method"><code>HelixWebServicesClient#user_details</code></a></p> </div> </div> </div> <div class="sect3"> <h4 id="patch_p4_vX_users_user"><a class="link" href="#patch_p4_vX_users_user"><code>PATCH /p4/v[api]/users/[user]</code></a></h4> <div class="paragraph"> <p>Update user specifications, similar to the <code>p4 user</code> command. Only the specified parameters in the body will be changed.</p> </div> <div class="paragraph"> <p>Your server permissions may vary, but this command generally requires super user access to operate on a different user than the authenticated account.</p> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_79"><a class="link" href="#_request_url_path_parameters_79">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">user</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The <code>User</code> property of the user specification (i.e., the login string).</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_82"><a class="link" href="#_request_headers_82">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_25"><a class="link" href="#_request_body_json_25">Request Body JSON</a></h5> <div class="paragraph"> <p>A single JSON object containing form fields of the <a href="http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_user.html"><code>p4 -ztag user [user name</a></code>] command.</p> </div> <div class="paragraph"> <p>For example, to update the user email:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "Email": "new_email@example.com" }</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="_response_headers_82"><a class="link" href="#_response_headers_82">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_60"><a class="link" href="#_ruby_client_60">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#update_user-instance_method"><code>HelixWebServicesClient#update_user</code></a></p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">user.update_user({ "Email" => "new_email@example.com" })</code></pre> </div> </div> </div> <div class="sect4"> <h5 id="delete_p4_vX_users_user"><a class="link" href="#delete_p4_vX_users_user"><code>DELETE /p4/v[api]/users/[user]</code></a></h5> <div class="paragraph"> <p>Removes the user specification, similar to the <code>p4 user -d</code> command.</p> </div> <div class="paragraph"> <p>Your server permissions may vary, but this command generally requires super user access.</p> </div> </div> <div class="sect4"> <h5 id="_request_url_path_parameters_80"><a class="link" href="#_request_url_path_parameters_80">Request URL Path Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>api</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine API level.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">user</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The <code>User</code> property of the user specification (i.e., the login string).</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_83"><a class="link" href="#_request_headers_83">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Authorization</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#authentication">Authentication</a></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_83"><a class="link" href="#_response_headers_83">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_ruby_client_61"><a class="link" href="#_ruby_client_61">Ruby Client</a></h5> <div class="paragraph"> <p>See <a href="./helix_web_services_client_ruby/HelixWebServicesClient.html#delete_user-instance_method"><code>HelixWebServicesClient#delete_user</code></a></p> </div> </div> </div> </div> <div class="sect2"> <h3 id="_project_methods"><a class="link" href="#_project_methods">Project Methods</a></h3> <div class="paragraph"> <p>These methods provide project JSON defined in <a href="#appendix_project_json">Appendix A: Project JSON</a>.</p> </div> <div class="paragraph"> <p>If you are extending Helix Web Services to include your project type, see <a href="#project_extensions">Adding Project Extensions</a>.</p> </div> <div class="sect3"> <h4 id="post_projects_v1_login"><a class="link" href="#post_projects_v1_login"><code>POST /projects/v1/login</code></a></h4> <div class="paragraph"> <p>Generates a login token for accessing projects via this instance.</p> </div> <div class="paragraph"> <p>This may return a p4 ticket, or another kind of ticket, depending upon the backing implementation. Use of this ticket will generally be used for authenticating requests related to project metadata.</p> </div> <div class="sect4"> <h5 id="_request_headers_84"><a class="link" href="#_request_headers_84">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code>, <code>text/plain</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_body_json_26"><a class="link" href="#_request_body_json_26">Request Body JSON</a></h5> <div class="paragraph"> <p>A single JSON object with the following keys</p> </div> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Property</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>user</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The Helix Versioning Engine login</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>password</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The password for the particular user</p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_84"><a class="link" href="#_response_headers_84">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code>, <code>text/plain</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_3"><a class="link" href="#_response_body_3">Response Body</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>The response returns a JSON object with a single <code>ticket</code> parameter.</p> </div> <div class="paragraph"> <p>Example response:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">{ "ticket": "16A76F005802E742E834163A22A4DED4" }</code></pre> </div> </div> </div> </div> <div class="sect3"> <h4 id="get_projects_v1"><a class="link" href="#get_projects_v1"><code>GET /projects/v1</code></a></h4> <div class="paragraph"> <p>Returns an array of projects accessible to the user.</p> </div> <div class="paragraph"> <p>There are two modes available here: details and ID-only. When details mode is specified, the return value is an array of complete project JSON objects. ID-only mode returns an array of project IDs only.</p> </div> <div class="sect4"> <h5 id="_request_uri_query_parameters_2"><a class="link" href="#_request_uri_query_parameters_2">Request URI Query Parameters</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 33%;"> <col style="width: 33%;"> <col style="width: 33%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Parameter Key</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-left valign-top">Default</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>mode</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>details</code> or <code>id</code>. If <code>details</code>, you receive entire project JSON. Otherwise, the output should be an array of strings.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>id</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>extension</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Only return projects with the indicated extension type. See the extension ID referenced in <a href="#appendix_project_json">Appendix A: Project JSON</a>. When empty, will return all projects.</p></td> <td class="tableblock halign-left valign-top"></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_request_headers_85"><a class="link" href="#_request_headers_85">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_85"><a class="link" href="#_response_headers_85">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_json_31"><a class="link" href="#_response_body_json_31">Response Body JSON</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>Returns an array of either project IDs, which will be strings, or project JSON. See <a href="#appendix_project_json">Appendix A: Project JSON</a> for project JSON details.</p> </div> <div class="paragraph"> <p>Example return of project IDs:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ "alpha", "beta", "gamma", "delta" ]</code></pre> </div> </div> <div class="paragraph"> <p>Truncated example return of project JSON:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-json" data-lang="json">[ { "id": "alpha", "name": "Project Alpha", ... truncated }, { "id": "beta", "name": "Beta Project", ... truncated } ]</code></pre> </div> </div> </div> </div> <div class="sect3"> <h4 id="get_projects_v1_project"><a class="link" href="#get_projects_v1_project"><code>GET /projects/v1/[project]</code></a></h4> <div class="paragraph"> <p>Returns project details for a particular project.</p> </div> <div class="sect4"> <h5 id="_request_headers_86"><a class="link" href="#_request_headers_86">Request Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Accept</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>X-Perforce-Helix_Web_Services-*</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">See <a href="#per_request_configuration">Per-Request Configuration</a></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_headers_86"><a class="link" href="#_response_headers_86">Response Headers</a></h5> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Header Name</th> <th class="tableblock halign-left valign-top">Notes</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>Content-Type</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>application/json</code></p></td> </tr> </tbody> </table> </div> <div class="sect4"> <h5 id="_response_body_4"><a class="link" href="#_response_body_4">Response Body</a></h5> <div class="paragraph"> <p>See <a href="#error_responses">Error Conventions</a> for the format of failures.</p> </div> <div class="paragraph"> <p>Returns the project JSON structure as defined in <a href="#appendix_project_json">Appendix A: Project JSON</a>.</p> </div> </div> </div> </div> </div> </div> <div class="sect1"> <h2 id="_client_sdk_reference"><a class="link" href="#_client_sdk_reference">Client SDK Reference</a></h2> <div class="sectionbody"> <div class="paragraph"> <p>For Ruby applications, we produce a <code>helix_web_serivces_client</code> gem that can help adjusting to some of the data inconsistency of our core Helix Versioning Engine.</p> </div> <div class="ulist"> <ul> <li> <p><a href="./helix_web_services_client_ruby/index.html">Open Ruby Client API</a></p> </li> </ul> </div> </div> </div> <div class="sect1"> <h2 id="_server_programming"><a class="link" href="#_server_programming">Server Programming</a></h2> <div class="sectionbody"> <div class="sect2"> <h3 id="_including_new_rack_middleware"><a class="link" href="#_including_new_rack_middleware">Including New Rack Middleware</a></h3> <div class="paragraph"> <p>Additional methods can be added as part of the core Helix Web Services server.</p> </div> <div class="paragraph"> <p>Adding new HTTP methods to the API should probably be done in a module specific to your extension, which forms a kind of namespace. By convention, we create a <code>MyModule::App</code> class that inherits from <code>Sinatra::Base</code>, to define the API to your module. Also, by convention, we prefix methods to your module with a simple string path, e.g., <code>my_module</code>.</p> </div> <div class="paragraph"> <p>Say we want the ability to fetch "stuff" from your module. You would create a Sinatra modular app in a <code>my_module/app.rb</code> file:</p> </div> <div class="listingblock"> <div class="title">my_module/app.rb</div> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">module MyModule class App < Sinatra::Base get '/my_module/v1/stuff` # We use p4, so make sure you have a p4 connection available require_p4 # If there's a problem, we'll actually handle exceptions for you results = env['p4'].run_print('-o', '//depot/stuff') # Right now, we only produce JSON. results.to_json end end end</code></pre> </div> </div> <div class="paragraph"> <p>Typically, you’d reference this in a <code>my_module.rb</code> file, which imports your App, and possibly defines helper methods in your namespace.</p> </div> <div class="listingblock"> <div class="title">my_module.rb</div> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">require 'my_module/app' module MyModule def helper_method # do something end end</code></pre> </div> </div> <div class="paragraph"> <p>The final step is to include your modular app in the top level <code>HelixWebServices</code> application.</p> </div> <div class="listingblock"> <div class="title">helix_web_services.rb</div> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby"># ... truncated other things require 'my_module' module HelixWebServices class Master < Sinatra::Base # ... lots of things are truncated register_app(MyModule::App) end end</code></pre> </div> </div> <div class="paragraph"> <p>Additionally, a method <code>use_after_settings</code> can run custom middleware after we’ve initialized our per-request configuration.</p> </div> <div class="paragraph"> <p>This will allow you to create special rules that, say, blocks invalid <code>P4PORT</code> values, such that applications can’t use your HWS instance to ping an unexpected perforce instance.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">require 'json' class CustomMiddleware def initialize(app) @app = app end def call(env) # Only allow 'localhost:1666' as the P4PORT value if env['hws_settings'].P4PORT != 'localhost:1666' return [ 400, { 'Content-Type' => 'text/plain', 'Content-Length' => '0' }, [] ] raise "localhost:1666 connections only" end return @app.call(env) end end HelixWebServices::Master.use_after_settings CustomMiddleware</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_registering_configuration_variables"><a class="link" href="#_registering_configuration_variables">Registering Configuration Variables</a></h3> <div class="paragraph"> <p>If your application requires new configuration, you should:</p> </div> <div class="olist arabic"> <ol class="arabic"> <li> <p>Declare your variables in <code>hws_settings.rb</code></p> </li> <li> <p>Document your variables in <code>doc/03_configuration.asc</code></p> </li> </ol> </div> <div class="paragraph"> <p>If you follow these steps, your configuration variables will be a part of the <code>env['hws_settings']</code> hashes available to each Sinatra method.</p> </div> </div> <div class="sect2"> <h3 id="project_extensions"><a class="link" href="#project_extensions">Adding Project Extensions</a></h3> <div class="paragraph"> <p>A project extension is a combination of JSON metadata and logic that can be used for product-specific integrations, or optional features.</p> </div> <div class="paragraph"> <p>Creating a project extension involves the following tasks:</p> </div> <div class="olist arabic"> <ol class="arabic"> <li> <p>Define the JSON extension, typically by documenting it</p> </li> <li> <p>Assign a simple extension ID and versioned MIME-style content type.</p> </li> <li> <p>Implement logic and assign to callbacks of the <a href="./helix_web_services/Projects/ProjectService.html">ProjectService</a> class</p> </li> </ol> </div> <div class="paragraph"> <p>Your extension should probably append handlers to the following methods:</p> </div> <div class="ulist"> <ul> <li> <p><a href="./helix_web_services/Projects/ProjectService.html#append_to_list-class_method">Projects::ProjectService.append_to_list</a></p> </li> <li> <p><a href="./helix_web_services/Projects/ProjectService.html#fetch_project-class_method">Projects::ProjectService.fetch_project</a></p> </li> </ul> </div> </div> </div> </div> <div class="sect1"> <h2 id="_server_api_reference"><a class="link" href="#_server_api_reference">Server API Reference</a></h2> <div class="sectionbody"> <div class="paragraph"> <p>The Ruby-based server API reference should help you when generating custom services to be deployed into your own environment.</p> </div> <div class="ulist"> <ul> <li> <p><a href="./helix_web_services/index.html">Open Server API</a></p> </li> </ul> </div> </div> </div> <div class="sect1"> <h2 id="_development_guide"><a class="link" href="#_development_guide">Development Guide</a></h2> <div class="sectionbody"> <div class="sect2"> <h3 id="_basic_development_set_up"><a class="link" href="#_basic_development_set_up">Basic Development Set Up</a></h3> <div class="paragraph"> <p>Helix Web Services runs on Unix-like machines only, typically Linux or OS X. If you want to use Windows, you will likely need to find an alternative for unicorn. Please understand that Windows is currently not tested or supported.</p> </div> <div class="paragraph"> <p>Obtain a copy of the source code from the Perforce Workshop. You can preview the source at <a href="https://swarm.workshop.perforce.com/projects/perforce-software-helix-web-services" class="bare">https://swarm.workshop.perforce.com/projects/perforce-software-helix-web-services</a>. If you have an account, you can import the code from <code>//guest/perforce_software/helix-web-services/main/…​</code> into your workspace.</p> </div> <div class="paragraph"> <p>From there you will need:</p> </div> <div class="olist arabic"> <ol class="arabic"> <li> <p>A recent version of Ruby, Ruby 2.2+ from <a href="https://rvm.io/">RVM</a> is recommended.</p> </li> <li> <p><a href="http://bundler.io/">Bundler</a>, typically installed via <code>gem install bundler</code>.</p> </li> </ol> </div> <div class="paragraph"> <p>First, you’ll setup a p4d instance locally that’s been seeded with some test data.</p> </div> <div class="listingblock"> <div class="content"> <pre>cd helix_web_services_client bundle install bundle exec p4util start bundle exec p4util init cd ..</pre> </div> </div> <div class="paragraph"> <p>(You can shut this server down with the command <code>bundle exec p4util kill</code> when you’re done.)</p> </div> <div class="paragraph"> <p>Next, you’ll launch Helix Web Services running under Unicorn, via the Foreman command:</p> </div> <div class="listingblock"> <div class="content"> <pre>cd helix_web_services bundle install WORKSPACE_DIR=/tmp/clients bundle exec foreman start</pre> </div> </div> <div class="paragraph"> <p>In case you need methods that generate temporary client workspaces, you’ll need the environment variable set. If you don’t set it, it will likely go to a default directory you do not</p> </div> <div class="paragraph"> <p>This should launch the application in the foreground. Use <code>CTRL+C</code> to kill it. This mechanism does not automatically reload all changes.</p> </div> <div class="paragraph"> <p>Helix Web Services is a fairly simple Sinatra Rack application. It’s entirely possible to launch it via a debugger under a different application server. This is typically done in IDEs such as RubyMine. Use the <code>config.ru</code> file in the <code>helix_web_services</code> directory and set the <code>WORKSPACE_DIR</code> environment variable.</p> </div> <div class="sect3"> <h4 id="_running_some_tests"><a class="link" href="#_running_some_tests">Running some tests</a></h4> <div class="paragraph"> <p>Executing tests like we do for automated builds is easy:</p> </div> <div class="listingblock"> <div class="content"> <pre>rake test</pre> </div> </div> <div class="paragraph"> <p>But, this is probably not what you want. This will create HTML output files. And it will start up both p4d and unicorn, then shut them both down.</p> </div> <div class="paragraph"> <p>For your development system, you probably want to have this environment:</p> </div> <div class="olist arabic"> <ol class="arabic"> <li> <p>The web server is running in a debugger</p> </li> <li> <p>The p4d instance is hanging around</p> </li> <li> <p>You can launch client or server tests independently</p> </li> </ol> </div> <div class="paragraph"> <p>Since I’m a RubyMine user, steps 1 and 3 are done via the IDE. Step 2, however, is done by a basic utility function called <code>p4util</code>, which I’ll describe in the next section.</p> </div> <div class="paragraph"> <p>Setting up RubyMine to runthe webserver requires these steps:</p> </div> <div class="olist arabic"> <ol class="arabic"> <li> <p>Create a new "Rack" configuration, and set the config file to <code>helix_web_services/config.ru</code>.</p> </li> <li> <p>Change the port to 9000.</p> </li> <li> <p>Set the <code>WORKSPACE_DIR</code> environment variable to something writable like <code>/tmp/workspaces</code>.</p> </li> </ol> </div> <div class="paragraph"> <p>Setting up RubyMine to launch tests is similarly straightforward:</p> </div> <div class="olist arabic"> <ol class="arabic"> <li> <p>Create a new "RSpec" configuration</p> </li> <li> <p>Set the specs folder to <code>helix_web_services_client/spec</code> or <code>helix_web_services/spec</code></p> </li> </ol> </div> <div class="sect4"> <h5 id="_setting_up_a_test_p4d_locally_with_p4util"><a class="link" href="#_setting_up_a_test_p4d_locally_with_p4util">Setting up a test p4d locally with p4util</a></h5> <div class="paragraph"> <p>The complete calling sequence to reset a test p4d locally is to run these commands in the root if the source tree:</p> </div> <div class="listingblock"> <div class="content"> <pre>p4util kill rm -rf /tmp/p4util/p4droot p4util start p4util init data/p4init</pre> </div> </div> <div class="paragraph"> <p>I typically execute this sequence in my bash shell using the <code>&&</code> operator:</p> </div> <div class="listingblock"> <div class="content"> <pre>p4util kill && rm -rf /tmp/p4util/p4droot && p4util start && p4util init data/p4init</pre> </div> </div> <div class="paragraph"> <p>This will reset.</p> </div> </div> </div> <div class="sect3"> <h4 id="_using_the_hws_console_against_a_development_mode_server"><a class="link" href="#_using_the_hws_console_against_a_development_mode_server">Using the hws_console against a development mode server</a></h4> <div class="paragraph"> <p>An <code>hws_console</code> application is available for local use, which can be useful for trying out a few commands. Launch it under bundler:</p> </div> <div class="listingblock"> <div class="content"> <pre>cd helix_web_services bundle exec ./bin/hws_console</pre> </div> </div> <div class="paragraph"> <p>This will create a basic PRY interactive console.</p> </div> <div class="paragraph"> <p>To create a client instance, you will typically run:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">c = HelixWebServicesClient.new(url: 'http://localhost:9000', user: 'jdoe', password: 'johndoe1A!')</code></pre> </div> </div> <div class="paragraph"> <p>From there, <code>c</code> is a client instance, you can use to run commands.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby"># Print the list of depot names as a string c.depots.map(&:name).join(", ")</code></pre> </div> </div> </div> <div class="sect3"> <h4 id="_adding_custom_logic_to_your_hws_installation"><a class="link" href="#_adding_custom_logic_to_your_hws_installation">Adding custom logic to your HWS installation</a></h4> <div class="paragraph"> <p>Some custom logic can be used to add or modify functionality of HWS. The <code>CUSTOM_SCRIPTS</code> property - see <a href="#system_configuration">Configuration</a> - points to a directory. If this directory exists, any ruby files will be required after most of the core application has been installed. This is a way to include <em>some</em> logic into the HWS system.</p> </div> <div class="paragraph"> <p>Here’s an example custom Ruby script adding methods to HWS via a new Sinatra module:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">require 'sinatra/base' class MyApp < Sinatra::Base get '/my_app' do {'custom': true}.to_json end end HelixWebServices::Master.register_app(MyApp)</code></pre> </div> </div> </div> </div> </div> </div> <div class="sect1"> <h2 id="_appendices"><a class="link" href="#_appendices">Appendices</a></h2> <div class="sectionbody"> <div class="sect2"> <h3 id="appendix_project_json"><a class="link" href="#appendix_project_json">Appendix A: Project JSON</a></h3> <div class="paragraph"> <p>Projects relate branches of revisions with other structures, like groups, to help create the foundation for general workflows.</p> </div> <div class="paragraph"> <p>The content type of the project JSON is <code>application/vnd.perforce.project.v1+json</code>. You can specify the content type without the version string, e.g., <code>application/vnd.perforce.project+json</code>. This may be useful in cases where you can handle possibly different versions of JSON, say, for migration.</p> </div> <div class="sect3"> <h4 id="_json_structure"><a class="link" href="#_json_structure">JSON structure</a></h4> <div class="paragraph"> <p>A project document is a JSON object that contains the following properties.</p> </div> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 33%;"> <col style="width: 33%;"> <col style="width: 33%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Property</th> <th class="tableblock halign-left valign-top">Required</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>id</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The <code>id</code> should be a unique string. It should be safe to put in as a single path element in a URI.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>name</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">A string suitable for display of the project.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>server</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">A P4 URL that indicates how to connect to the p4d instance to retrieve the files of the project. For example, <code>p4://P4CHARSET=<a href="mailto:auto@perforce.myinstance.com">auto@perforce.myinstance.com</a>:1666</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Extension ID</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">No</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Each extension ID will map to a particular JSON object type defined for each extension. For example, there may be a property named <code>helixCloud</code> that maps to the JSON defined in <a href="#appendix_helix_cloud">Appendix C: Helix Cloud</a>.</p></td> </tr> </tbody> </table> </div> <div class="sect3"> <h4 id="_project_extensions"><a class="link" href="#_project_extensions">Project Extensions</a></h4> <div class="paragraph"> <p>Each project extension should have a simple string ID, e.g., <code>helixCloud</code>, <code>gitFusion</code>.</p> </div> <div class="paragraph"> <p>Project extensions should always define a <code>contentType</code> property that is a versioned MIME content type. For example, <code>application/vnd.perforce.helixCloud.v1+json</code>.</p> </div> </div> </div> <div class="sect2"> <h3 id="appendix_hve_project_json"><a class="link" href="#appendix_hve_project_json">Appendix B: Helix Versioning Engine Project JSON</a></h3> <div class="paragraph"> <p>Returns projects that are stored in a single Helix Versioning Engine server.</p> </div> <div class="paragraph"> <p>If the <code>HVE_PROJECT_PATH</code> setting is specified, this will return all directories under that path as projects. The project <code>id</code> is encoded to be a specific part of a URL. It is the application’s responsibility to deal with any reconfiguration of the <code>HVE_PROJECT_PATH</code> setting. The project <code>id</code> is only valid for the same setting.</p> </div> <div class="paragraph"> <p>The project <code>name</code> is also the name of the directory, just not URL-safe.</p> </div> <div class="paragraph"> <p>The <code>server</code> property will include the <code>HVE_PROJECT_PATH</code> setting as the URL path.</p> </div> <div class="paragraph"> <p>The content type of this JSON is <code>application/vnd.perforce.project.hve.v1+json</code>. The simple string ID is <code>hve</code>.</p> </div> <div class="sect3"> <h4 id="_json_structure_2"><a class="link" href="#_json_structure_2">JSON Structure</a></h4> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 33%;"> <col style="width: 33%;"> <col style="width: 33%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Property</th> <th class="tableblock halign-left valign-top">Required</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>depotPath</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Yes</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The absolute depot path to the folder on the server.</p></td> </tr> </tbody> </table> </div> </div> <div class="sect2"> <h3 id="appendix_helix_cloud"><a class="link" href="#appendix_helix_cloud">Appendix C: Helix Cloud</a></h3> <div class="admonitionblock warning"> <table> <tr> <td class="icon"> <div class="title">Warning</div> </td> <td class="content"> We do not yet know the JSON structure from Helix Cloud, and exactly what it will need to provide to the Helix Sync client. </td> </tr> </table> </div> </div> <div class="sect2"> <h3 id="appendix_config_services"><a class="link" href="#appendix_config_services">Appendix D: Service Configuration JSON</a></h3> <div class="sect3"> <h4 id="_json_structure_3"><a class="link" href="#_json_structure_3">JSON Structure</a></h4> <div class="paragraph"> <p>A service configuration document is a JSON array of objects. Each object contains the following properties:</p> </div> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 50%;"> <col style="width: 50%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Property</th> <th class="tableblock halign-left valign-top">Type</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>type</code></p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The type of service available in the system. One of <code>p4d</code>, <code>git-swarm</code>, <code>git-fusion</code>, <code>swarm</code>, or <code>commons</code>.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><code>uri</code></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Array</p></td> </tr> </tbody> </table> </div> <div class="sect3"> <h4 id="_stored_format"><a class="link" href="#_stored_format">Stored Format</a></h4> <div class="paragraph"> <p>The service configuration JSON is a file pointed to by the <code>SERVICE_CONFIGURATION</code> variable. See <a href="#system_configuration">Configuration</a> for details.</p> </div> <div class="paragraph"> <p>It is assumed that the configuration is maintained by the system administrator. Edits to files should be coordinated across all HWS instances.</p> </div> </div> </div> </div> </div> </div> <div id="footer"> <div id="footer-text"> Version 2015.1.alpha<br> Last updated 2015-10-06 16:29:32 UTC </div> </div> </body> </html>
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#8 | 16196 | Doug Scheirer | Merge from main | ||
#7 | 16148 | Doug Scheirer | Merge from main | ||
#6 | 16114 | Doug Scheirer | Merge from main | ||
#5 | 16079 | Doug Scheirer | Merge from main | ||
#4 | 16014 | Doug Scheirer | Merge down from main | ||
#3 | 15845 | Doug Scheirer | Integ from main | ||
#2 | 15715 | Doug Scheirer | merge changes from main | ||
#1 | 15688 | Doug Scheirer |
Populate -o //guest/perforce_software/helix-web-services/... //guest/doug_scheirer/helix-web-services/.... |
||
//guest/perforce_software/helix-web-services/main/build/doc/p4ws.html | |||||
#53 | 15676 | tjuricek | HWS/NOARCH/2015.1.main/201509092205 | ||
#52 | 15545 | tjuricek | Place in config and hooks for Helix Cloud authentication. | ||
#51 | 15530 | tjuricek | Add basic development guide | ||
#50 | 15517 | tjuricek | Do not require changelist ID for submitting Helix Sync pending changelists. | ||
#49 | 15499 | tjuricek | Naive implementation of helix sync project submit for "helix versioning engine projects". | ||
#48 | 15496 | tjuricek |
Revise GET /helix_sync/v1/changes/[project] to /helix_sync/v1/changes/[project]/pending The base method is really intended for the latest changelist number. Meh. |
||
#47 | 15487 | tjuricek | Add basic ability to create pending changelists for helix sync projects. | ||
#46 | 15483 | tjuricek |
Add a new 'hws_console` application to the deployment. This should give users the ability to use the Ruby client for quick and dirty debugging of issues with HWS. Since it's so easy, I've added it to the deployment guide. |
||
#45 | 15479 | tjuricek | Added a basic "HVE project" implementation for creating clients. | ||
#44 | 15460 | tjuricek | Add notes on service startup in deployment | ||
#43 | 15447 | tjuricek |
Add simple Example application to list "projects" in a HVE instance. Qt's a little weird to follow, so I may have to find a different kind of example to write. It does work, however. |
||
#42 | 15435 | tjuricek |
Add proposed HTTP methods for Helix Sync. It's a little unclear to me why you would need a local root directory to create the shared shelving changelist for a particular project (and user). So I didn't add that. |
||
#41 | 15423 | tjuricek |
Revised HWS Qt API. This is a major revision of the API, which removes most of the "typed" data, replacing it with a more generic "executeMethodDone" callback. The main benefit here is to allow the API to interop with different versions of p4d, and not restrict the methods it can call. We may add more helpers in the future. |
||
#40 | 15299 | tjuricek | Revise documentation of our new 'list available services' method. | ||
#39 | 15297 | tjuricek |
Implement of 'cluster services' configuration. The configuration will be stored in a local JSON file, which is expected to be maintained by the systems admin. Eventually, it's expected to have this sort of thing implemented via Helix Admin. |
||
#38 | 15260 | tjuricek |
Fix truncation of content when listing a single file's details. Added message warning people about timeouts. This does work, and doesn't bring the system down, but you'll probably hit timeouts if you're trying to download files using this system. |
||
#37 | 15257 | tjuricek |
Added stress test, corrected per-request header config. Apparently using underscores is a "special" mechanism for HTTP headers, and requires adjusting nginx to allow such things. Might as well just recommend using hyphens, which get converted to underscores anyway. The current test just hits a listing of 20000 files against p4play. Returns a 2.5 MB response, which doesn't seem to cause problems (yay). |
||
#36 | 15242 | tjuricek | Add Helix Sync stubs and documentation | ||
#35 | 15241 | tjuricek | Add Git Fusion stubs and documentation. | ||
#34 | 15240 | tjuricek |
Set api level via request path on all Helix Versioning Engine methods. This will allow migration of applications to different P4D versions. Our internal methods (like project API) should attempt to handle backward compatibility similarly. P4WEBAPI-118 |
||
#33 | 15229 | tjuricek | Remove incorrect default setting for P4HOST | ||
#32 | 15228 | tjuricek | Revise triggers implementation, tests, and documentation. | ||
#31 | 15227 | tjuricek |
Revise implementation, tests, and documentation for protections management. Remove some specs I will not be revising from the helix_web_services project. |
||
#30 | 15225 | tjuricek |
Revise counter implementation, tests, and documentation Wasn't available in the Ruby client before, so, it's now available. |
||
#29 | 15222 | tjuricek |
Revise server specs testing and documentation. Note: also fixed issues with setting P4PORT via headers. For whatever reason, the host setting doesn't seem to work like I expect it to, though P4PORT works just fine. |
||
#28 | 15211 | tjuricek | Implement tests and documentation for label spec management. | ||
#27 | 15210 | tjuricek | Implement tests and documentation for job spec management. | ||
#26 | 15209 | tjuricek | Implement tests and documentation for group spec management. | ||
#25 | 15208 | tjuricek |
Revise 'command' implementation, tests, and documentaiton. This includes a change from a command blacklist to a whitelist. See P4WEBAPI-21 |
||
#24 | 15205 | tjuricek | Implemented tests and documentation for depot spec editing. | ||
#23 | 15189 | tjuricek | Update files implementation, testing, and documentation. | ||
#22 | 15188 | tjuricek | Execute user modification commands as the super user in tests. | ||
#21 | 15185 | tjuricek | Update user spec management implementation, tests, and documentation. | ||
#20 | 15144 | tjuricek |
Setup stream spec tests and documentation. Also revised the documentation folder http_p4_web_api -> helix_versioning_engine |
||
#19 | 15132 | tjuricek | Provde a basic submit -e mechanism on classic perforce workspaces. | ||
#18 | 15110 | tjuricek | Revise changes methods for new p4 connection handling, add server specs, remove model references in client, and update asciidoc documentation. | ||
#17 | 15099 | tjuricek | Revise project services to be our simple 'container' for other systems. | ||
#16 | 15098 | tjuricek |
Revised project services to GET-only forms. With Helix Sync revising to integrate purely with Helix Cloud, this is the only thing we can reasonably define. |
||
#15 | 15090 | tjuricek |
Update _proposed_ API for project services. This is *very likely* to change, and will not be implemented until reviewed. |
||
#14 | 15078 | tjuricek |
clients spec method revisions Updated some other documentation. |
||
#13 | 15077 | tjuricek |
Add new 'model' technique, revised branch spec operations, test Auth::Middleware. The Ruby client now does *not* strictly type anything, but extends OpenStruct with helper methods to help deal with inconsistent data formats. See the OpenModel class documentation for more details. The Auth::Middleware class is also *finally* implemented as well. This does not take into account all possible variations of server behavior (yet), but that will happen in follow-up work. |
||
#12 | 15073 | tjuricek | Update Auth::Middleware and add spec | ||
#11 | 15042 | tjuricek | Document error conventions. | ||
#10 | 15038 | tjuricek | Document 'login' auth method and client programming overview. | ||
#9 | 15032 | tjuricek |
Starting config and doc revisions. System is now broken while revisions underway. Configuration of the p4d connection is now done via a single HWSSettings middleware object injected into the Rack env. The HWSP4Cleanup middleware now cleans up any p4 injected into the Rack env. The Auth::App class now mostly just contains one method to generate a p4 ticket. /auth/v1/login. Added yard documentation for the main project. Yard docs have been reconfigured to dump into build/ directories. This should probably be done with each release. Hm... The top level rake file contains a task, 'all:doc', to update our documentation. This should probably be run for each checkin. Hm... Specs are now using Rack::Test on top of a 'live' p4d. I'd suggest you still use the p4util mechanism, which now dumps to a /tmp folder, so we can safely add P4IGNORE rules back into your local .p4config file. Old 'perforce' application now called 'helix_versioning_engine'. Removing cache data. Helix Sync may be slow. It may also get axed. We'll see. |
||
#8 | 14980 | tjuricek |
Starting to make revisions to the Asciidoc guide. These are just revisions to the preable sections. |
||
#7 | 14184 | tjuricek | Revise the CD diagram, update official docs, and change the DB configuration key. | ||
#6 | 14182 | tjuricek | Asciidoc conversion of the changes HTTP guide | ||
#5 | 14049 | tjuricek |
Add methods to generate client workspaces for a user. The Qt SDK was updated based on immediate need. Also, add Ruby client SDK documentation to the docs site. Everything is early, but there's *some* reference available at least. |
||
#4 | 14027 | tjuricek | Move almost all Qt SDK documentation to Doxygen system, and just reference it in the main doc site. | ||
#3 | 14002 | tjuricek | Some preliminary API documentation for the JavaScript SDK. | ||
#2 | 13614 | tjuricek | Update the Qt guide to include the QSettings* constructor. | ||
#1 | 13612 | tjuricek | Update deployment guide, switch built documentation to asciidoc, remove unused packaging script for p4_web_api |