=== Helix Git Fusion Keys
[[get_git_fusion_v1_keys]]
==== `GET /git_fusion/v1/keys`
Returns a list of all currently present keys for all users.
===== Request Headers
[cols="2*", options="header"]
|===
| Header Name
| Notes
| `Authorization`
| See <<authentication>>
| `Accept`
| `application/json`
| `X-Perforce-Helix_Web_Services-*`
| See <<per_request_configuration>>
|===
===== Response Headers
[cols="2*", options="header"]
|===
| Header Name
| Notes
| `Content-Type`
| `application/json`
|===
===== Response Body JSON
Response consists of a list of hashes - each entry containing SSH key contents with file name under which it it saved an username that the key is assigned to.
[source,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-----"
},
{
'key_name': 'file_name',
'user': 'jsmith',
'key': "-----BEGIN PUBLIC KEY-----\nSSHKEYCONTENT3\n-----END PUBLIC KEY-----"
}
]
----
[[get_git_fusion_v1_user_keys]]
==== `GET /git_fusion/v1/keys/[user]`
Returns a list of all keys for a user.
===== Request URL Path Parameters
[cols="2*", options="header"]
|===
| Parameter
| Description
| `user`
| See <<encode_uri>>
|===
===== Request Headers
[cols="2*", options="header"]
|===
| Header Name
| Notes
| `Authorization`
| See <<authentication>>
| `Accept`
| `application/json`
| `X-Perforce-Helix_Web_Services-*`
| See <<per_request_configuration>>
|===
===== Response Headers
[cols="2*", options="header"]
|===
| Header Name
| Notes
| `Content-Type`
| `application/json`
|===
===== Response Body JSON
Response consists of a list of hashes - each entry containing a key for specified user with file name under which the key is stored.
[source,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-----"
}
]
----
[[put_git_fusion_v1_keys_user_key_name]]
==== `PUT /git_fusion/v1/keys/[user]/[key_name]`
Submits a new SSH key for specified user under chosen name.
===== Request URL Path Parameters
[cols="2*", options="header"]
|===
| Parameter
| Description
| `user`
| Encoded version of perforce username. See <<encode_uri>>
| `key_name`
| Encoded version of key name. See <<encode_uri>>
|===
===== Request Headers
[cols="2*", options="header"]
|===
| Header Name
| Notes
| `Authorization`
| See <<authentication>>
| `Accept`
| `application/json`
| `X-Perforce-Helix_Web_Services-*`
| See <<per_request_configuration>>
|===
===== Request JSON Body
The request should be file contents of a new SSH key that should be submitted.
An example request body might look like:
[source,plain]
----
-----BEGIN PUBLIC KEY-----
SSHKEYCONTENT5
-----END PUBLIC KEY-----
----
===== Response Headers
[cols="2*", options="header"]
|===
| Header Name
| Notes
| `Content-Type`
| `application/json`
|===
===== Response Body JSON
See <<error_responses>> for the format of failures.
[[delete_git_fusion_v1_delete_key]]
==== `DELETE /git_fusion/v1/key/[user]/[key_name]`
Deletes specified key for chosen user.
===== Request URL Path Parameters
[cols="2*", options="header"]
|===
| Parameter
| Description
| `user`
| Encoded version of perforce username. See <<encode_uri>>
| `key_name`
| Encoded version of key name. See <<encode_uri>>
|===
===== Request Headers
[cols="2*", options="header"]
|===
| Header Name
| Notes
| `Authorization`
| See <<authentication>>
| `Accept`
| `application/json`
| `X-Perforce-Helix_Web_Services-*`
| See <<per_request_configuration>>
|===
===== Response Headers
[cols="2*", options="header"]
|===
| Header Name
| Notes
| `Content-Type`
| `application/json`
|===
===== Response JSON Body
See <<error_responses>> for the format of failures.
[[delete_git_fusion_v1_user_keys]]
==== `DELETE /git_fusion/v1/keys/[user]`
Deletes all SSH keys for specified user.
===== Request URL Path Parameters
[cols="2*", options="header"]
|===
| Parameter
| Description
| `user`
| See <<encode_uri>>
|===
===== Request Headers
[cols="2*", options="header"]
|===
| Header Name
| Notes
| `Authorization`
| See <<authentication>>
| `Accept`
| `application/json`
| `X-Perforce-Helix_Web_Services-*`
| See <<per_request_configuration>>
|===
===== Response Headers
[cols="2*", options="header"]
|===
| Header Name
| Notes
| `Content-Type`
| `application/json`
|===
===== Response JSON Body
See <<error_responses>> for the format of failures.
[[encode_uri]]
==== Encoding Perforce username & SSH key names
All perforce usernames and SSH key names present in URL's must be encoded by replacing illegal characters with a percent sign followed by a hexadecimal representation of codepoint of the character.
Currently we do not support key_names containing a forward slash.
Table contains some of the illegal characters that need encoding followed by its replacement.
[cols="2*", options="header"]
|===
| Character
| Replacement
| /
| %2F
| \
| %5C
| ?
| %3F
| =
| %3D
| %
| %25
| :
| %3A
|===
Note: Similar encoding is used by http://ruby-doc.org/stdlib-1.9.3/libdoc/cgi/rdoc/CGI.html#method-c-escape[escape method of CGI class in Ruby]