1. Introduction
This is the REST API documentation for Genie version 4.3.0. Here you will find specific details of how to invoke the Genie REST API and what you can expect as return values.
For more Genie information see the website. |
For high level information and installation instructions please see the reference guide. |
For a demo of this version of Genie please see demo guide. |
2. Assumptions
This documentation assumes a basic knowledge of how REST APIs work. If you don’t know things like HTTP verbs see websites like this one.
3. HATEOAS
A lot of the API’s return application/hal+json
as a content type. This is a superset of JSON built to support
HATEOAS (Hypermedia as the Engine of Application State). Rather than re-writing what
HATEOAS is see this great write up on the Spring Website about it.
4. Security
All of this documentation assumes security is disabled for Genie. If your installation has security enabled the REST APIs will be secured via OAuth2 or x509 certs or both.
These are the currently supported API security mechanisms but others could be plugged in. We’ll only talk about OAuth2 here for now until another implementation is done. |
4.1. OAuth2
If OAuth2 is enabled you’ll need to send your JWT you got back from your provider along with your
API request. This is accomplished by setting your Authorization
header to a value of Bearer {your token here}
.
4.2. x509
If your admin has security Genie using client and server certificates mechanisms you’ll need to send your client certificate along with your request.
Something like curl --cert {your cert} {genie endpoint}
5. Resources
This section contains the documentation for various resources sent to and from the various Genie APIs. Note their structure and fields, particularly what is marked optional. Optional means when you submit one of these resources to Genie you don’t need to set that field. Genie either doesn’t require it or if it does, as is the case with ID’s, it will create one if you don’t provide it. When you get a resource all fields Genie has stored will be returned.
5.1. Application
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
configs |
Array |
Any configuration files needed for the resource |
true |
|
type |
String |
The type of application this is (e.g. hadoop, presto, spark). Can be used to group. |
true |
|
status |
String |
The status of the application. Options: [ACTIVE, DEPRECATED, INACTIVE] |
Must not be null |
false |
dependencies |
Array |
The dependencies for the application |
true |
5.2. Cluster
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
configs |
Array |
Any configuration files needed for the resource |
true |
|
status |
String |
The status of the cluster. Options: [UP, OUT_OF_SERVICE, TERMINATED] |
Must not be null |
false |
dependencies |
Array |
The dependencies for the cluster |
true |
5.3. Command
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
configs |
Array |
Any configuration files needed for the resource |
true |
|
status |
String |
The status of the command. Options: [ACTIVE, DEPRECATED, INACTIVE] |
Must not be null |
false |
executable |
String |
The executable to run on the Genie node when this command is used. e.g. /usr/bin/hadoop |
Must not be empty. Size must be between 0 and 1024 inclusive |
false |
executableAndArguments |
Array |
The executable and arguments to run on the Genie node when this command is used. e.g. /usr/bin/hadoop |
Must not be empty |
false |
checkDelay |
Number |
Deprecated as of 4.3.0. Now is a no-op on the server side. |
false |
|
memory |
Number |
The default amount of memory (in MB) that should be allocated for instances of this command client |
Must be at least 1 |
true |
dependencies |
Array |
The dependencies for the command |
true |
|
clusterCriteria |
Array |
The priority ordered list of criteria to resolve clusters that this command can run jobs on |
true |
|
runtime |
Object |
The various job runtime parameters that should be used if this command is used |
false |
5.4. Job Request
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
commandArgs |
String |
Any arguments to append to the command executable when the job is run |
Size must be between 0 and 10000 inclusive |
true |
clusterCriterias |
Array |
List of cluster criteria’s for which a match will be attempted with register cluster tags. Each set of tags within a given cluster criteria must have at least one non-blank (e.g. ' ', ' ', null) tag. |
Must not be empty |
false |
commandCriteria |
Array |
Set of tags which will attempt to match against the commands linked to selected cluster. There must be at least one non-blank (e.g. ' ', ' ', null) criteria within the set |
Must not be empty |
false |
group |
String |
A group that the job should be run under on the linux system |
Size must be between 0 and 255 inclusive |
true |
disableLogArchival |
Boolean |
If you want to disable backing up job output files set this to true. Default: false |
true |
|
String |
If you want e-mail notification on job completion enter address here |
Must be a well-formed email address. Size must be between 0 and 255 inclusive |
true |
|
cpu |
Number |
For future use. Currently has no impact. |
Must be at least 1 |
true |
memory |
Number |
The amount of memory (in MB) desired for job client. Cannot exceed configured max. |
Must be at least 1 |
true |
timeout |
Number |
The timeout (in seconds) after which job will be killed by system, system setting used if not set |
Must be at least 1 |
true |
configs |
Array |
URI’s of configuration files which will be downloaded into job working directory at runtime |
true |
|
dependencies |
Array |
URI’s of dependency files which will be downloaded into job working directory at runtime |
true |
|
applications |
Array |
Complete list of application ids if power user wishes to override selected command defaults |
true |
|
grouping |
String |
The grouping of the job relative to other jobs. e.g. scheduler job name |
true |
|
groupingInstance |
String |
The grouping instance of the job relative to other jobs. e.g. scheduler job run |
true |
|
runtime |
Object |
The requested job runtime values |
false |
5.5. Job
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
commandArgs |
String |
Any arguments to append to the command executable when the job is run |
Size must be between 0 and 10000 inclusive |
true |
status |
String |
The status of the job. Options: [RESERVED, RESOLVED, ACCEPTED, CLAIMED, INIT, RUNNING, SUCCEEDED, KILLED, FAILED, INVALID] |
Must not be null |
false |
statusMsg |
String |
The status message of the job |
Size must be between 0 and 255 inclusive |
true |
started |
String |
The time (UTC ISO8601 with millis) the job was started |
true |
|
finished |
String |
The time (UTC ISO8601 with millis) the job finished |
true |
|
archiveLocation |
String |
The URI where the working directory zip was stored |
Size must be between 0 and 1024 inclusive |
true |
clusterName |
String |
The name of the cluster the job was run on if it’s been determined |
Size must be between 0 and 255 inclusive |
true |
commandName |
String |
The name of the command the job was run with if it’s been determined |
Size must be between 0 and 255 inclusive |
true |
runtime |
String |
Runtime of the job in ISO8601 duration format |
Must not be null |
true |
grouping |
String |
The grouping of the job relative to other jobs. e.g. scheduler job name |
true |
|
groupingInstance |
String |
The grouping instance of the job relative to other jobs. e.g. scheduler job run |
true |
5.6. Job Execution
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
hostName |
String |
The host name of the Genie node responsible for the job |
Size must be between 1 and 1024 inclusive |
false |
processId |
Number |
The id of the job client process on the Genie node |
true |
|
checkDelay |
Number |
The amount of time in milliseconds between checks of the job status by Genie |
Must be at least 1 |
true |
timeout |
String |
The date (UTC ISO8601 with millis) when the job will be killed by Genie due to timeout |
true |
|
exitCode |
Number |
The job client process exit code after the job is done |
true |
|
memory |
Number |
The amount of memory (in MB) allocated to the job client |
Must be at least 1 |
true |
archiveStatus |
String |
The archival status of the job directory |
true |
|
launcherExt |
Object |
JSON object that contains metadata specific to the launcher implementation for the job |
true |
|
runtime |
Object |
The runtime execution environment for a job |
false |
5.7. Job Metadata
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
clientHost |
String |
The host name of the client that submitted the job to Genie |
true |
|
userAgent |
String |
The user agent string that was passed to Genie on job request |
true |
|
numAttachments |
Number |
The number of attachments sent to Genie with the job request |
true |
|
totalSizeOfAttachments |
Number |
The total size of all attachments sent to Genie with the job request. In bytes. |
true |
|
stdOutSize |
Number |
The final size of the stdout file after a job is completed. In bytes. |
true |
|
stdErrSize |
Number |
The final size of the stderr file after a job is completed. In bytes. |
true |
5.8. Criterion
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The unique identifier a resource needs to have to match this criterion |
true |
|
name |
String |
The name a resource needs to have to match this criterion |
true |
|
version |
String |
The version a resource needs to have to match this criterion |
true |
|
status |
String |
The status a resource needs to have to match this criterion |
true |
|
tags |
Array |
The set of tags a resource needs to have to match this criterion |
true |
6. Jobs API
6.1. Submit a Job
6.1.1. Description
The main API in Genie. Submitting a job to be run.
There are two different ways to submit a job to Genie. Both go to the same endpoint but you can simply send a JSON
payload if you have no attachments. This means setting your content type to application/json
. If you do have
attachments you want to send with your job request you need to set the content type to multipart/form-data
and
post the request that way. Examples are below.
6.1.2. Endpoint
POST /api/v3/jobs
The id in this example is optional. If you include one Genie will use it. If not it will provide one. If you provide one it must be unique. |
This Example is without attachments |
6.1.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
None
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
commandArgs |
String |
Any arguments to append to the command executable when the job is run |
Size must be between 0 and 10000 inclusive |
true |
clusterCriterias |
Array |
List of cluster criteria’s for which a match will be attempted with register cluster tags. Each set of tags within a given cluster criteria must have at least one non-blank (e.g. ' ', ' ', null) tag. |
Must not be empty |
false |
commandCriteria |
Array |
Set of tags which will attempt to match against the commands linked to selected cluster. There must be at least one non-blank (e.g. ' ', ' ', null) criteria within the set |
Must not be empty |
false |
group |
String |
A group that the job should be run under on the linux system |
Size must be between 0 and 255 inclusive |
true |
disableLogArchival |
Boolean |
If you want to disable backing up job output files set this to true. Default: false |
true |
|
String |
If you want e-mail notification on job completion enter address here |
Must be a well-formed email address. Size must be between 0 and 255 inclusive |
true |
|
cpu |
Number |
For future use. Currently has no impact. |
Must be at least 1 |
true |
memory |
Number |
The amount of memory (in MB) desired for job client. Cannot exceed configured max. |
Must be at least 1 |
true |
timeout |
Number |
The timeout (in seconds) after which job will be killed by system, system setting used if not set |
Must be at least 1 |
true |
configs |
Array |
URI’s of configuration files which will be downloaded into job working directory at runtime |
true |
|
dependencies |
Array |
URI’s of dependency files which will be downloaded into job working directory at runtime |
true |
|
applications |
Array |
Complete list of application ids if power user wishes to override selected command defaults |
true |
|
grouping |
String |
The grouping of the job relative to other jobs. e.g. scheduler job name |
true |
|
groupingInstance |
String |
The grouping instance of the job relative to other jobs. e.g. scheduler job run |
true |
|
runtime |
Object |
The requested job runtime values |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/jobs' -i -X POST \
-H 'Content-Type: application/json' \
-d '{
"id" : null,
"created" : null,
"updated" : null,
"version" : "1.0",
"user" : "genie",
"name" : "List * ... Directories bash job",
"description" : "Genie 3 Test Job",
"metadata" : {
"schedulerJobName" : "6a113c50-45af-4e9a-a91e-91c9a2357a87",
"schedulerRunId" : "303bff20-8981-458c-a6c1-63f18f89f826"
},
"tags" : [ "aTag", "zTag" ],
"configs" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/job/config1" ],
"dependencies" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/job/dep1" ],
"setupFile" : "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/job/jobsetupfile",
"commandArgs" : "-c 'sleep 5 && echo hello world'",
"clusterCriterias" : [ {
"tags" : [ "localhost" ]
} ],
"commandCriteria" : [ "bash" ],
"group" : null,
"disableLogArchival" : false,
"email" : null,
"cpu" : null,
"memory" : null,
"timeout" : null,
"applications" : [ ],
"grouping" : "Workflow.Foo",
"groupingInstance" : "Workflow.Foo_Step.Blah-2020021919:12:34.000_1",
"runtime" : {
"resources" : {
"cpu" : null,
"gpu" : null,
"memoryMb" : null,
"diskMb" : null,
"networkMbps" : null
},
"images" : { }
}
}'
HTTPie
$ echo '{
"id" : null,
"created" : null,
"updated" : null,
"version" : "1.0",
"user" : "genie",
"name" : "List * ... Directories bash job",
"description" : "Genie 3 Test Job",
"metadata" : {
"schedulerJobName" : "6a113c50-45af-4e9a-a91e-91c9a2357a87",
"schedulerRunId" : "303bff20-8981-458c-a6c1-63f18f89f826"
},
"tags" : [ "aTag", "zTag" ],
"configs" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/job/config1" ],
"dependencies" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/job/dep1" ],
"setupFile" : "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/job/jobsetupfile",
"commandArgs" : "-c 'sleep 5 && echo hello world'",
"clusterCriterias" : [ {
"tags" : [ "localhost" ]
} ],
"commandCriteria" : [ "bash" ],
"group" : null,
"disableLogArchival" : false,
"email" : null,
"cpu" : null,
"memory" : null,
"timeout" : null,
"applications" : [ ],
"grouping" : "Workflow.Foo",
"groupingInstance" : "Workflow.Foo_Step.Blah-2020021919:12:34.000_1",
"runtime" : {
"resources" : {
"cpu" : null,
"gpu" : null,
"memoryMb" : null,
"diskMb" : null,
"networkMbps" : null
},
"images" : { }
}
}' | http POST 'https://genie.example.com/api/v3/jobs' \
'Content-Type:application/json'
Response Documentation
Headers
Name | Description |
---|---|
|
The URI |
Payload Fields
None
HATEOAS Links
None
HTTP Messages
Request
POST /api/v3/jobs HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 1514
{
"id" : null,
"created" : null,
"updated" : null,
"version" : "1.0",
"user" : "genie",
"name" : "List * ... Directories bash job",
"description" : "Genie 3 Test Job",
"metadata" : {
"schedulerJobName" : "6a113c50-45af-4e9a-a91e-91c9a2357a87",
"schedulerRunId" : "303bff20-8981-458c-a6c1-63f18f89f826"
},
"tags" : [ "aTag", "zTag" ],
"configs" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/job/config1" ],
"dependencies" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/job/dep1" ],
"setupFile" : "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/job/jobsetupfile",
"commandArgs" : "-c 'sleep 5 && echo hello world'",
"clusterCriterias" : [ {
"tags" : [ "localhost" ]
} ],
"commandCriteria" : [ "bash" ],
"group" : null,
"disableLogArchival" : false,
"email" : null,
"cpu" : null,
"memory" : null,
"timeout" : null,
"applications" : [ ],
"grouping" : "Workflow.Foo",
"groupingInstance" : "Workflow.Foo_Step.Blah-2020021919:12:34.000_1",
"runtime" : {
"resources" : {
"cpu" : null,
"gpu" : null,
"memoryMb" : null,
"diskMb" : null,
"networkMbps" : null
},
"images" : { }
}
}
Response
HTTP/1.1 202 Accepted
Location: https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06
Date: Fri, 16 Sep 2022 00:49:49 GMT
Keep-Alive: timeout=60
Connection: keep-alive
This example is with attachments |
6.1.4. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
multipart/form-data |
Path Parameters
None
Query Parameters
None
Payload Fields
Part | Description |
---|---|
|
The job request JSON. Content type must be application/json for part |
|
An attachment file. There can be multiple. Type should be octet-stream |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/jobs' -i -X POST \
-H 'Content-Type: multipart/form-data; boundary="aKg0RRFtTGHZJmXQdEVZjjlJoWyTXePqTD5yT"' \
-F 'request=@file;type=application/json' \
-F 'attachment=@query.sql;type=application/octet-stream' \
-F 'attachment=@query2.sql;type=application/octet-stream'
HTTPie
$ http --multipart POST 'https://genie.example.com/api/v3/jobs' \
'request'@'file' \
'attachment'@'query.sql' \
'attachment'@'query2.sql'
Response Documentation
Headers
Name | Description |
---|---|
|
The URI |
Payload Fields
None
HATEOAS Links
None
HTTP Messages
Request
POST /api/v3/jobs HTTP/1.1
Content-Type: multipart/form-data; boundary="aKg0RRFtTGHZJmXQdEVZjjlJoWyTXePqTD5yT"; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Host: genie.example.com
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=request; filename=file
Content-Type: application/json
{"id":null,"created":null,"updated":null,"version":"1.0","user":"genie","name":"List * ... Directories bash job","description":"Genie 3 Test Job","metadata":null,"tags":[],"configs":[],"dependencies":[],"setupFile":"file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/job/jobsetupfile","commandArgs":"-c 'sleep 5 && echo hello world'","clusterCriterias":[{"tags":["localhost"]}],"commandCriteria":["bash"],"group":null,"disableLogArchival":true,"email":null,"cpu":null,"memory":null,"timeout":null,"applications":[],"grouping":null,"groupingInstance":null,"runtime":{"resources":{"cpu":null,"gpu":null,"memoryMb":null,"diskMb":null,"networkMbps":null},"images":{}}}
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=attachment; filename=query.sql
Content-Type: application/octet-stream
--
--
-- Copyright 2018 Netflix, Inc.
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
-- https://genie.example.com/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
--
select * from myTable;
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=attachment; filename=query2.sql
Content-Type: application/octet-stream
--
--
-- Copyright 2018 Netflix, Inc.
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
-- https://genie.example.com/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
--
SELECT * FROM your_table JOIN my_table ON your_table.id = my_table.id WHERE x > 50;
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--
Response
HTTP/1.1 202 Accepted
Location: https://genie.example.com/api/v3/jobs/04f95b01-c313-4042-a61c-49947a371ba6
Date: Fri, 16 Sep 2022 00:50:34 GMT
Keep-Alive: timeout=60
Connection: keep-alive
6.2. Find Jobs
6.2.1. Description
Search for jobs using query parameters.
6.2.2. Endpoint
GET /api/v3/jobs
6.2.3. API Docs
Request Documentation
Headers
None
Path Parameters
None
Query Parameters
Parameter | Description |
---|---|
|
The page number to get. Default to 0. |
|
The size of the page to get. Default to 64. |
|
The fields to sort the results by. Defaults to 'updated,desc'. |
|
The id of the jobs to find. Use % symbol for regex like search. |
|
The name of the jobs to find. Use % symbol for regex like search. |
|
The user of the jobs to find. Use % symbol for regex like search. |
|
The status(es) of the jobs to find. Can have multiple. Options: [RESERVED, RESOLVED, ACCEPTED, CLAIMED, INIT, RUNNING, SUCCEEDED, KILLED, FAILED, INVALID] |
|
The tag(s) of the jobs to find. Can have multiple. |
|
The name of the cluster on which the jobs ran. Use % symbol for regex like search. |
|
The id of the cluster on which the jobs ran. |
|
The name of the command which was executed by the job. Use % symbol for regex like search. |
|
The id of the command which was executed by the job. |
|
The minimum started time of the job in milliseconds since epoch. (inclusive) |
|
The maximum started time of the job in milliseconds since epoch. (exclusive) |
|
The minimum finished time of the job in milliseconds since epoch. (inclusive) |
|
The maximum finished time of the job in milliseconds since epoch. (exclusive) |
|
The grouping the job should be a member of. Use % symbol for regex like search. |
|
The grouping instance the job should be a member of. Use % symbol for regex like search. |
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/jobs?user=genie' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/jobs?user=genie'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
_links |
Object |
Links to other resources. |
false |
|
page |
Object |
The result page information. |
false |
|
page.size |
Number |
The number of elements in this page result. |
false |
|
page.totalElements |
Number |
The total number of elements this search result could return. |
false |
|
page.totalPages |
Number |
The total number of pages there could be at the current page size. |
false |
|
page.number |
Number |
The current page number. |
false |
|
_embedded.jobSearchResultList |
Array |
The found jobs. |
false |
HATEOAS Links
Relation | Description |
---|---|
|
The current search |
|
The first page for this search |
|
The previous page for this search |
|
The next page for this search |
|
The last page for this search |
HTTP Messages
Request
GET /api/v3/jobs?user=genie HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:50:08 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 947
{
"_embedded" : {
"jobSearchResultList" : [ {
"id" : "52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06",
"name" : "List * ... Directories bash job",
"user" : "genie",
"status" : "SUCCEEDED",
"started" : "2022-09-16T00:50:01.081Z",
"finished" : "2022-09-16T00:50:06.310Z",
"clusterName" : "Local laptop",
"commandName" : "Unix Bash command",
"runtime" : "PT5.229S",
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/jobs?user=genie{&id,name,status,tag,clusterName,clusterId,commandName,commandId,minStarted,maxStarted,minFinished,maxFinished,grouping,groupingInstance}",
"templated" : true
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
6.3. Get a Job
6.3.1. Description
Get metadata about a specific job.
6.3.2. Endpoint
GET /api/v3/jobs/{id}
6.3.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
commandArgs |
String |
Any arguments to append to the command executable when the job is run |
Size must be between 0 and 10000 inclusive |
true |
status |
String |
The status of the job. Options: [RESERVED, RESOLVED, ACCEPTED, CLAIMED, INIT, RUNNING, SUCCEEDED, KILLED, FAILED, INVALID] |
Must not be null |
false |
statusMsg |
String |
The status message of the job |
Size must be between 0 and 255 inclusive |
true |
started |
String |
The time (UTC ISO8601 with millis) the job was started |
true |
|
finished |
String |
The time (UTC ISO8601 with millis) the job finished |
true |
|
archiveLocation |
String |
The URI where the working directory zip was stored |
Size must be between 0 and 1024 inclusive |
true |
clusterName |
String |
The name of the cluster the job was run on if it’s been determined |
Size must be between 0 and 255 inclusive |
true |
commandName |
String |
The name of the command the job was run with if it’s been determined |
Size must be between 0 and 255 inclusive |
true |
runtime |
String |
Runtime of the job in ISO8601 duration format |
Must not be null |
true |
grouping |
String |
The grouping of the job relative to other jobs. e.g. scheduler job name |
true |
|
groupingInstance |
String |
The grouping instance of the job relative to other jobs. e.g. scheduler job run |
true |
HATEOAS Links
Relation | Description |
---|---|
|
URI for this job |
|
The request that kicked off this job |
|
The job execution information for this job |
|
The job metadata information for this job |
|
The output URI for the job |
|
The current status of the job |
|
The cluster this job ran on |
|
The command this job executed |
|
The applications this job used |
HTTP Messages
Request
GET /api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06 HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:50:06 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 2087
{
"id" : "52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06",
"created" : "2022-09-16T00:49:49.264Z",
"updated" : "2022-09-16T00:50:06.484Z",
"version" : "1.0",
"user" : "genie",
"name" : "List * ... Directories bash job",
"description" : "Genie 3 Test Job",
"metadata" : {
"schedulerJobName" : "6a113c50-45af-4e9a-a91e-91c9a2357a87",
"schedulerRunId" : "303bff20-8981-458c-a6c1-63f18f89f826"
},
"tags" : [ "aTag", "zTag" ],
"status" : "SUCCEEDED",
"statusMsg" : "Job finished successfully.",
"started" : "2022-09-16T00:50:01.081Z",
"finished" : "2022-09-16T00:50:06.310Z",
"archiveLocation" : "file:///tmp/genie/archives/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06",
"clusterName" : "Local laptop",
"commandName" : "Unix Bash command",
"runtime" : "PT5.229S",
"commandArgs" : "-c 'sleep 5 && echo hello world'",
"grouping" : "Workflow.Foo",
"groupingInstance" : "Workflow.Foo_Step.Blah-2020021919:12:34.000_1",
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06"
},
"output" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output"
},
"request" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/request"
},
"execution" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/execution"
},
"metadata" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/metadata"
},
"status" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/status"
},
"cluster" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/cluster"
},
"command" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/command"
},
"applications" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/applications"
}
}
}
6.4. Kill a Job
6.4.1. Description
Request for a job to be killed.
6.4.2. Endpoint
DELETE /api/v3/jobs/{id}
6.4.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/jobs/69e5803d-ae50-45ae-8732-da1d172b443f' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/jobs/69e5803d-ae50-45ae-8732-da1d172b443f'
HTTP Messages
Request
DELETE /api/v3/jobs/69e5803d-ae50-45ae-8732-da1d172b443f HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 202 Accepted
Date: Fri, 16 Sep 2022 00:49:48 GMT
Keep-Alive: timeout=60
Connection: keep-alive
6.5. Get Job Status
6.5.1. Description
Get the current status of a job.
6.5.2. Endpoint
GET /api/v3/jobs/{id}/status
6.5.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/status' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/status'
Response Documentation
Headers
Name | Description |
---|---|
|
application/json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
status |
String |
The job status. One of: [RESERVED, RESOLVED, ACCEPTED, CLAIMED, INIT, RUNNING, SUCCEEDED, KILLED, FAILED, INVALID] |
false |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/status HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:50:06 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 28
{
"status" : "SUCCEEDED"
}
6.6. Get Contents From the Job Working Directory
6.6.1. Description
This API acts as a file browser for the remote working directory of your job. You can request endpoints and if it is a directory you will be shown the contents of the directory and be able to navigate. If the endpoint points to a file it will return the file.
6.6.2. Endpoint
GET /api/v3/jobs/{id}/output/{path}**
6.6.3. Getting a directory as JSON
This is the default behavior for directories if no Accept header is present
|
6.6.4. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
|
The path to the directory to get |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/' -i -X GET \
-H 'Accept: application/json'
HTTPie
$ http GET 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/' \
'Accept:application/json'
Response Documentation
Headers
Name | Description |
---|---|
|
application/json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
parent |
Object |
Information about the parent of this directory |
true |
|
parent.name |
String |
The name of the parent directory |
true |
|
parent.url |
String |
The url to get the parent |
true |
|
parent.size |
Number |
The size of the parent in bytes |
true |
|
parent.lastModified |
String |
The last time the parent was modified in ISO8601 UTC with milliseconds included |
true |
|
directories |
Array |
All the subdirectories of this directory |
false |
|
directories[].name |
String |
The name of the directory |
false |
|
directories[].url |
String |
The url to get the directory |
false |
|
directories[].size |
Number |
The size of the directory in bytes |
false |
|
directories[].lastModified |
String |
The last time the directory was modified in ISO8601 UTC with milliseconds included |
false |
|
files |
Array |
All the files in this directory |
false |
|
files[].name |
String |
The name of the file |
false |
|
files[].url |
String |
The url to get the file |
false |
|
files[].size |
Number |
The size of the file in bytes |
false |
|
files[].lastModified |
String |
The last time the file was modified in ISO8601 UTC with milliseconds included |
false |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/ HTTP/1.1
Accept: application/json
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 1459
Date: Fri, 16 Sep 2022 00:50:07 GMT
Keep-Alive: timeout=60
Connection: keep-alive
{
"parent" : null,
"directories" : [ {
"name" : "genie/",
"url" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/genie",
"size" : 4096,
"lastModified" : "2022-09-16T00:50:00.981Z"
} ],
"files" : [ {
"name" : "config1",
"url" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/config1",
"size" : 0,
"lastModified" : "2022-09-16T00:50:00.329Z"
}, {
"name" : "dep1",
"url" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/dep1",
"size" : 0,
"lastModified" : "2022-09-16T00:50:00.329Z"
}, {
"name" : "genie_setup.sh",
"url" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/genie_setup.sh",
"size" : 0,
"lastModified" : "2022-09-16T00:50:00.329Z"
}, {
"name" : "run",
"url" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/run",
"size" : 3828,
"lastModified" : "2022-09-16T00:50:00.281Z"
}, {
"name" : "stderr",
"url" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/stderr",
"size" : 0,
"lastModified" : "2022-09-16T00:50:00.941Z"
}, {
"name" : "stdout",
"url" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/stdout",
"size" : 12,
"lastModified" : "2022-09-16T00:50:06.029Z"
} ]
}
6.6.5. Getting a directory as HTML
This would happen automatically if you called from browser due to browser default accept header |
6.6.6. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
text/html |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
|
The path to the directory to get |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/' -i -X GET \
-H 'Accept: text/html'
HTTPie
$ http GET 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/' \
'Accept:text/html'
Response Documentation
Headers
Name | Description |
---|---|
|
text/html |
Payload Fields
None
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/ HTTP/1.1
Accept: text/html
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 2729
Date: Fri, 16 Sep 2022 00:50:07 GMT
Keep-Alive: timeout=60
Connection: keep-alive
<!DOCTYPE html><html><head><title>52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06</title><style type="text/css"><!--body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}--></style> </head><body><h1>52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06</h1><HR size="1" noshade="noshade"><table width="100%" cellspacing="0" cellpadding="5" align="center"><tr><td align="left"><font size="+1"><strong>Filename</strong></font></td><td align="right"><font size="+1"><strong>Size</strong></font></td><td align="right"><font size="+1"><strong>Last Modified</strong></font></td></tr><tr bgcolor="#eeeeee"><td align="left"> <a href="https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/genie"><tt>genie/</tt></a></td><td align="right"><tt>-</tt></td><td align="right"><tt>Fri, 16 Sep 2022 00:50:00 GMT</tt></td></tr><tr><td align="left"> <a href="https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/config1"><tt>config1</tt></a></td><td align="right"><tt>0 bytes</tt></td><td align="right"><tt>Fri, 16 Sep 2022 00:50:00 GMT</tt></td></tr><tr bgcolor="#eeeeee"><td align="left"> <a href="https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/dep1"><tt>dep1</tt></a></td><td align="right"><tt>0 bytes</tt></td><td align="right"><tt>Fri, 16 Sep 2022 00:50:00 GMT</tt></td></tr><tr><td align="left"> <a href="https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/genie_setup.sh"><tt>genie_setup.sh</tt></a></td><td align="right"><tt>0 bytes</tt></td><td align="right"><tt>Fri, 16 Sep 2022 00:50:00 GMT</tt></td></tr><tr bgcolor="#eeeeee"><td align="left"> <a href="https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/run"><tt>run</tt></a></td><td align="right"><tt>3 KB</tt></td><td align="right"><tt>Fri, 16 Sep 2022 00:50:00 GMT</tt></td></tr><tr><td align="left"> <a href="https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/stderr"><tt>stderr</tt></a></td><td align="right"><tt>0 bytes</tt></td><td align="right"><tt>Fri, 16 Sep 2022 00:50:00 GMT</tt></td></tr><tr bgcolor="#eeeeee"><td align="left"> <a href="https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/stdout"><tt>stdout</tt></a></td><td align="right"><tt>12 bytes</tt></td><td align="right"><tt>Fri, 16 Sep 2022 00:50:06 GMT</tt></td></tr></table><HR size="1" noshade="noshade"><h3>Apache Tomcat/9.0.62</h3></body></html>
6.6.8. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
/ |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
|
The path to the file to get |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/run' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/run'
Response Documentation
Headers
Name | Description |
---|---|
|
The content type of the file being returned |
Payload Fields
None
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output/run HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Last-Modified: Fri, 16 Sep 2022 00:50:00 GMT
Accept-Ranges: bytes
Content-Type: text/plain;charset=UTF-8
Content-Length: 3828
Date: Fri, 16 Sep 2022 00:50:07 GMT
Keep-Alive: timeout=60
Connection: keep-alive
#!/usr/bin/env bash
#
# Generated by Genie for job: 52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06
#
# Error out if any command fails
set -o errexit
# Error out if any command in a pipeline fails
set -o pipefail
# Error out if unknown variable is used
set -o nounset
# Save original stdout and stderr in fd 6 and 7
exec 6>&1
exec 7>&2
# Trap exit signals to ensure children processes are dead before returning
function handle_kill_request {
echo "Handling $1 signal" >&2
# Update trap
trap wait SIGTERM SIGINT SIGHUP
# Send SIGTERM to all children
pkill -P $$ || true
for ((iteration=1; iteration < 30; iteration++))
{
if pkill -0 -P $$ &> /dev/null;
then
echo "Waiting for children to terminate" >&2
sleep 1
else
echo "All children terminated" >&2
exit 1
fi
}
# Reaching this point means the children did not die. Kill with SIGKILL
echo "Terminating all children with SIGKILL" >&2
pkill -9 -P $$
}
trap 'handle_kill_request SIGTERM' SIGTERM
trap 'handle_kill_request SIGINT' SIGINT
trap 'handle_kill_request SIGHUP' SIGHUP
# Locally-generated environment variables
export GENIE_JOB_DIR="/tmp/genie/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06"
export GENIE_APPLICATION_DIR="${GENIE_JOB_DIR}/genie/applications"
export GENIE_COMMAND_DIR="${GENIE_JOB_DIR}/genie/command/cmd1"
export GENIE_CLUSTER_DIR="${GENIE_JOB_DIR}/genie/cluster/cluster1"
export __GENIE_SETUP_LOG_FILE="${GENIE_JOB_DIR}/genie/logs/setup.log"
export __GENIE_ENVIRONMENT_DUMP_FILE="${GENIE_JOB_DIR}/genie/logs/env.log"
export __GENIE_SETUP_ERROR_MARKER_FILE="${GENIE_JOB_DIR}/genie/setup_failed.txt"
# Mark the beginnig of the setup by creating a marker file
echo "The job script failed during setup. See ${__GENIE_SETUP_LOG_FILE} for details" > ${__GENIE_SETUP_ERROR_MARKER_FILE}
# During setup, redirect stdout and stderr of this script to a log file
exec > ${__GENIE_SETUP_LOG_FILE}
exec 2>&1
echo "Setup start: $(date '+%Y-%m-%d %H:%M:%S')"
# Server-provided environment variables
export GENIE_CLUSTER_ID="cluster1"
export GENIE_CLUSTER_NAME="Local laptop"
export GENIE_CLUSTER_TAGS="localhost"
export GENIE_COMMAND_ID="cmd1"
export GENIE_COMMAND_NAME="Unix Bash command"
export GENIE_COMMAND_TAGS="bash"
export GENIE_JOB_GROUPING="Workflow.Foo"
export GENIE_JOB_GROUPING_INSTANCE="Workflow.Foo_Step.Blah-2020021919:12:34.000_1"
export GENIE_JOB_ID="52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06"
export GENIE_JOB_MEMORY="1500"
export GENIE_JOB_NAME="List * ... Directories bash job"
export GENIE_JOB_TAGS="aTag,zTag"
export GENIE_REQUESTED_CLUSTER_TAGS="[[localhost]]"
export GENIE_REQUESTED_CLUSTER_TAGS_0="localhost"
export GENIE_REQUESTED_COMMAND_TAGS="bash"
export GENIE_USER="genie"
export GENIE_USER_GROUP=""
export GENIE_VERSION="4"
echo "Sourcing setup script for cluster cluster1"
source ${GENIE_JOB_DIR}/genie/cluster/cluster1/genie_setup.sh
echo "Sourcing setup script for application app1"
source ${GENIE_JOB_DIR}/genie/applications/app1/genie_setup.sh
echo "Sourcing setup script for application app2"
source ${GENIE_JOB_DIR}/genie/applications/app2/genie_setup.sh
echo "Sourcing setup script for command cmd1"
source ${GENIE_JOB_DIR}/genie/command/cmd1/genie_setup.sh
echo "Sourcing setup script for job 52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06"
source ${GENIE_JOB_DIR}/genie_setup.sh
echo "Setup end: $(date '+%Y-%m-%d %H:%M:%S')"
# Setup completed successfully, delete marker file
rm ${__GENIE_SETUP_ERROR_MARKER_FILE}
# Restore the original stdout and stderr. Close fd 6 and 7
exec 1>&6 6>&-
exec 2>&7 7>&-
# Dump environment post-setup
env | grep -E --regex='.*' | sort > ${__GENIE_ENVIRONMENT_DUMP_FILE}
# Launch the command
/bin/bash -c 'sleep 5 && echo hello world' <&0 &
wait %1
exit $?
6.7. Get a Job Request
6.7.1. Description
Get the original request which spawned the job.
6.7.2. Endpoint
GET /api/v3/jobs/{id}/request
6.7.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/request' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/request'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
commandArgs |
String |
Any arguments to append to the command executable when the job is run |
Size must be between 0 and 10000 inclusive |
true |
clusterCriterias |
Array |
List of cluster criteria’s for which a match will be attempted with register cluster tags. Each set of tags within a given cluster criteria must have at least one non-blank (e.g. ' ', ' ', null) tag. |
Must not be empty |
false |
commandCriteria |
Array |
Set of tags which will attempt to match against the commands linked to selected cluster. There must be at least one non-blank (e.g. ' ', ' ', null) criteria within the set |
Must not be empty |
false |
group |
String |
A group that the job should be run under on the linux system |
Size must be between 0 and 255 inclusive |
true |
disableLogArchival |
Boolean |
If you want to disable backing up job output files set this to true. Default: false |
true |
|
String |
If you want e-mail notification on job completion enter address here |
Must be a well-formed email address. Size must be between 0 and 255 inclusive |
true |
|
cpu |
Number |
For future use. Currently has no impact. |
Must be at least 1 |
true |
memory |
Number |
The amount of memory (in MB) desired for job client. Cannot exceed configured max. |
Must be at least 1 |
true |
timeout |
Number |
The timeout (in seconds) after which job will be killed by system, system setting used if not set |
Must be at least 1 |
true |
configs |
Array |
URI’s of configuration files which will be downloaded into job working directory at runtime |
true |
|
dependencies |
Array |
URI’s of dependency files which will be downloaded into job working directory at runtime |
true |
|
applications |
Array |
Complete list of application ids if power user wishes to override selected command defaults |
true |
|
grouping |
String |
The grouping of the job relative to other jobs. e.g. scheduler job name |
true |
|
groupingInstance |
String |
The grouping instance of the job relative to other jobs. e.g. scheduler job run |
true |
|
runtime |
Object |
The requested job runtime values |
false |
HATEOAS Links
Relation | Description |
---|---|
|
URI for this job request |
|
The job that resulted from this request |
|
The job execution that resulted from this request |
|
The job metadata information for this job |
|
The output URI for the job |
|
The current status of the job |
HTTP Messages
Request
GET /api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/request HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:50:07 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 2270
{
"id" : null,
"created" : null,
"updated" : null,
"version" : "1.0",
"user" : "genie",
"name" : "List * ... Directories bash job",
"description" : "Genie 3 Test Job",
"metadata" : {
"schedulerJobName" : "6a113c50-45af-4e9a-a91e-91c9a2357a87",
"schedulerRunId" : "303bff20-8981-458c-a6c1-63f18f89f826"
},
"tags" : [ "aTag", "zTag" ],
"configs" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/job/config1" ],
"dependencies" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/job/dep1" ],
"setupFile" : "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/job/jobsetupfile",
"commandArgs" : "-c 'sleep 5 && echo hello world'",
"clusterCriterias" : [ {
"tags" : [ "localhost" ]
} ],
"commandCriteria" : [ "bash" ],
"group" : null,
"disableLogArchival" : false,
"email" : null,
"cpu" : null,
"memory" : null,
"timeout" : null,
"applications" : [ ],
"grouping" : "Workflow.Foo",
"groupingInstance" : "Workflow.Foo_Step.Blah-2020021919:12:34.000_1",
"runtime" : {
"resources" : {
"cpu" : null,
"gpu" : null,
"memoryMb" : null,
"diskMb" : null,
"networkMbps" : null
},
"images" : { }
},
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/request"
},
"job" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06"
},
"execution" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/execution"
},
"output" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output"
},
"status" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/status"
},
"metadata" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/metadata"
}
}
}
6.8. Get a Job Execution
6.8.1. Description
Get metadata about a job execution. Information like where a job was run, its process exit code, etc.
6.8.2. Endpoint
GET /api/v3/jobs/{id}/execution
6.8.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/execution' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/execution'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
hostName |
String |
The host name of the Genie node responsible for the job |
Size must be between 1 and 1024 inclusive |
false |
processId |
Number |
The id of the job client process on the Genie node |
true |
|
checkDelay |
Number |
The amount of time in milliseconds between checks of the job status by Genie |
Must be at least 1 |
true |
timeout |
String |
The date (UTC ISO8601 with millis) when the job will be killed by Genie due to timeout |
true |
|
exitCode |
Number |
The job client process exit code after the job is done |
true |
|
memory |
Number |
The amount of memory (in MB) allocated to the job client |
Must be at least 1 |
true |
archiveStatus |
String |
The archival status of the job directory |
true |
|
launcherExt |
Object |
JSON object that contains metadata specific to the launcher implementation for the job |
true |
|
runtime |
Object |
The runtime execution environment for a job |
false |
HATEOAS Links
Relation | Description |
---|---|
|
URI for this job execution |
|
The job associated with this execution |
|
The job request that spawned this execution |
|
The job metadata information for this job |
|
The output URI for the job |
|
The current status of the job |
HTTP Messages
Request
GET /api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/execution HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:50:08 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1405
{
"id" : "52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06",
"created" : "2022-09-16T00:49:49.264Z",
"updated" : "2022-09-16T00:50:06.484Z",
"hostName" : "localhost",
"processId" : null,
"checkDelay" : null,
"timeout" : "2022-09-23T00:50:01.081Z",
"exitCode" : null,
"memory" : 1500,
"archiveStatus" : "ARCHIVED",
"launcherExt" : {
"launcherClass" : "com.netflix.genie.web.agent.launchers.impl.LocalAgentLauncherImpl",
"sourceHostname" : "localhost"
},
"runtime" : {
"resources" : {
"cpu" : 1,
"gpu" : 0,
"memoryMb" : 1500,
"diskMb" : 10240,
"networkMbps" : 10000
},
"images" : { }
},
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/execution"
},
"job" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06"
},
"request" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/request"
},
"output" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output"
},
"status" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/status"
},
"metadata" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/metadata"
}
}
}
6.9. Get Job Metadata
6.9.1. Description
Get metadata about a job beyond core information. Information like where a job was submitted from, how large its output files were, etc.
6.9.2. Endpoint
GET /api/v3/jobs/{id}/metadata
6.9.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/metadata' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/metadata'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
clientHost |
String |
The host name of the client that submitted the job to Genie |
true |
|
userAgent |
String |
The user agent string that was passed to Genie on job request |
true |
|
numAttachments |
Number |
The number of attachments sent to Genie with the job request |
true |
|
totalSizeOfAttachments |
Number |
The total size of all attachments sent to Genie with the job request. In bytes. |
true |
|
stdOutSize |
Number |
The final size of the stdout file after a job is completed. In bytes. |
true |
|
stdErrSize |
Number |
The final size of the stderr file after a job is completed. In bytes. |
true |
HATEOAS Links
Relation | Description |
---|---|
|
URI for this job metadata |
|
The job associated with this execution |
|
The job request that spawned this execution |
|
The job execution information for this job |
|
The output URI for the job |
|
The current status of the job |
HTTP Messages
Request
GET /api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/metadata HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:50:08 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1080
{
"id" : "52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06",
"created" : "2022-09-16T00:49:49.264Z",
"updated" : "2022-09-16T00:50:06.484Z",
"clientHost" : "127.0.0.1",
"userAgent" : "Apache-HttpClient/4.5.13 (Java/11.0.2)",
"numAttachments" : 0,
"totalSizeOfAttachments" : 0,
"stdOutSize" : null,
"stdErrSize" : null,
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/metadata"
},
"job" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06"
},
"request" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/request"
},
"output" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/output"
},
"status" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/status"
},
"execution" : {
"href" : "https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/execution"
}
}
}
6.10. Get the Cluster a Job Ran On
6.10.1. Description
Get the metadata about the cluster which was selected to run the job based on the cluster and command criteria in the job request.
6.10.2. Endpoint
GET /api/v3/jobs/{id}/cluster
6.10.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/cluster' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/cluster'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
configs |
Array |
Any configuration files needed for the resource |
true |
|
status |
String |
The status of the cluster. Options: [UP, OUT_OF_SERVICE, TERMINATED] |
Must not be null |
false |
dependencies |
Array |
The dependencies for the cluster |
true |
HATEOAS Links
Relation | Description |
---|---|
|
URI for this cluster |
|
Get all the commands this cluster can use |
HTTP Messages
Request
GET /api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/cluster HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:50:08 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1490
{
"id" : "cluster1",
"created" : "2022-09-16T00:49:49.172Z",
"updated" : "2022-09-16T00:49:49.172Z",
"version" : "1.0",
"user" : "genie",
"name" : "Local laptop",
"description" : null,
"metadata" : null,
"tags" : [ "localhost", "genie.id:cluster1", "genie.name:Local laptop" ],
"configs" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/cluster1/config1", "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/cluster1/config2" ],
"dependencies" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/cluster1/dep1", "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/cluster1/dep2" ],
"setupFile" : "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/cluster1/setupfile",
"status" : "UP",
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/clusters/cluster1"
},
"commands" : {
"href" : "https://genie.example.com/api/v3/clusters/cluster1/commands{?status}",
"templated" : true
}
}
}
6.11. Get the Command a Job Executed
6.11.1. Description
Get the metadata about the command which was selected to be executed by the job based on the cluster and command criteria in the job request.
6.11.2. Endpoint
GET /api/v3/jobs/{id}/command
6.11.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/command' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/command'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
configs |
Array |
Any configuration files needed for the resource |
true |
|
status |
String |
The status of the command. Options: [ACTIVE, DEPRECATED, INACTIVE] |
Must not be null |
false |
executable |
String |
The executable to run on the Genie node when this command is used. e.g. /usr/bin/hadoop |
Must not be empty. Size must be between 0 and 1024 inclusive |
false |
executableAndArguments |
Array |
The executable and arguments to run on the Genie node when this command is used. e.g. /usr/bin/hadoop |
Must not be empty |
false |
checkDelay |
Number |
Deprecated as of 4.3.0. Now is a no-op on the server side. |
false |
|
memory |
Number |
The default amount of memory (in MB) that should be allocated for instances of this command client |
Must be at least 1 |
true |
dependencies |
Array |
The dependencies for the command |
true |
|
clusterCriteria |
Array |
The priority ordered list of criteria to resolve clusters that this command can run jobs on |
true |
|
runtime |
Object |
The various job runtime parameters that should be used if this command is used |
false |
HATEOAS Links
Relation | Description |
---|---|
|
URI for this command |
|
Get all the applications this command depends on |
|
Get all clusters this command is available on |
HTTP Messages
Request
GET /api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/command HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:50:08 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 2195
{
"id" : "cmd1",
"created" : "2022-09-16T00:49:49.198Z",
"updated" : "2022-09-16T00:49:49.227Z",
"version" : "1.0",
"user" : "genie",
"name" : "Unix Bash command",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:Unix Bash command", "bash", "genie.id:cmd1" ],
"configs" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/cmd1/config2", "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/cmd1/GB18030.txt", "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/cmd1/config1" ],
"dependencies" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/cluster1/dep1", "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/cluster1/dep2" ],
"setupFile" : "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/cmd1/setupfile",
"status" : "ACTIVE",
"executable" : "/bin/bash",
"executableAndArguments" : [ "/bin/bash" ],
"checkDelay" : 10000,
"memory" : null,
"clusterCriteria" : [ {
"id" : null,
"name" : null,
"version" : null,
"status" : null,
"tags" : [ "localhost" ]
} ],
"runtime" : {
"resources" : {
"cpu" : null,
"gpu" : null,
"memoryMb" : null,
"diskMb" : null,
"networkMbps" : null
},
"images" : { }
},
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/commands/cmd1"
},
"applications" : {
"href" : "https://genie.example.com/api/v3/commands/cmd1/applications"
},
"clusters" : {
"href" : "https://genie.example.com/api/v3/commands/cmd1/clusters{?status}",
"templated" : true
}
}
}
6.12. Get the Applications a Job Command Used
6.12.1. Description
Get the list of applications that were used by the command selected by job to execute.
6.12.2. Endpoint
GET /api/v3/jobs/{id}/applications
6.12.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/applications' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/applications'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
The applications for the job |
false |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/jobs/52fdf5e3-f3e6-428b-9ad5-7dc265bb5f06/applications HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:50:08 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 2904
[ {
"id" : "app1",
"created" : "2022-09-16T00:49:49.131Z",
"updated" : "2022-09-16T00:49:49.131Z",
"version" : "1.0",
"user" : "genie",
"name" : "Application 1",
"description" : null,
"metadata" : null,
"tags" : [ "genie.id:app1", "genie.name:Application 1" ],
"configs" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/app1/config1", "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/app1/config2" ],
"dependencies" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/app1/dep2", "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/app1/dep1" ],
"setupFile" : "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/app1/setupfile",
"status" : "ACTIVE",
"type" : null,
"links" : [ {
"rel" : "self",
"href" : "https://genie.example.com/api/v3/applications/app1"
}, {
"rel" : "commands",
"href" : "https://genie.example.com/api/v3/applications/app1/commands{?status}"
} ]
}, {
"id" : "app2",
"created" : "2022-09-16T00:49:49.150Z",
"updated" : "2022-09-16T00:49:49.150Z",
"version" : "1.0",
"user" : "genie",
"name" : "Application 2",
"description" : null,
"metadata" : null,
"tags" : [ "genie.id:app2", "genie.name:Application 2" ],
"configs" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/app2/config1", "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/app2/config2" ],
"dependencies" : [ "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/app2/dep1", "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/app2/dep2" ],
"setupFile" : "file:/home/travis/build/Netflix/genie/genie-web/build/resources/integTest/com/netflix/genie/web/apis/rest/v3/controllers/JobRestControllerIntegrationTests/app2/setupfile",
"status" : "ACTIVE",
"type" : null,
"links" : [ {
"rel" : "self",
"href" : "https://genie.example.com/api/v3/applications/app2"
}, {
"rel" : "commands",
"href" : "https://genie.example.com/api/v3/applications/app2/commands{?status}"
} ]
} ]
7. Applications API
7.1. Create an Application
7.1.1. Description
Create a new application in the system.
7.1.2. Endpoint
POST /api/v3/applications
The id in this example is optional. If you include one Genie will use it. If not it will provide one. If you provide one it must be unique. |
7.1.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
None
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
configs |
Array |
Any configuration files needed for the resource |
true |
|
type |
String |
The type of application this is (e.g. hadoop, presto, spark). Can be used to group. |
true |
|
status |
String |
The status of the application. Options: [ACTIVE, DEPRECATED, INACTIVE] |
Must not be null |
false |
dependencies |
Array |
The dependencies for the application |
true |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications' -i -X POST \
-H 'Content-Type: application/json' \
-d '{
"id" : null,
"created" : null,
"updated" : null,
"version" : "1.5.1",
"user" : "genie",
"name" : "spark",
"description" : "Spark for Genie",
"metadata" : null,
"tags" : [ "type:spark", "ver:1.5.1" ],
"configs" : [ "s3://mybucket/spark/1.5.1/spark-env.sh" ],
"dependencies" : [ "s3://mybucket/spark/1.5.1/spark.tar.gz" ],
"setupFile" : "s3://mybucket/spark/1.5.1/setupBase-spark.sh",
"status" : "ACTIVE",
"type" : "spark"
}'
HTTPie
$ echo '{
"id" : null,
"created" : null,
"updated" : null,
"version" : "1.5.1",
"user" : "genie",
"name" : "spark",
"description" : "Spark for Genie",
"metadata" : null,
"tags" : [ "type:spark", "ver:1.5.1" ],
"configs" : [ "s3://mybucket/spark/1.5.1/spark-env.sh" ],
"dependencies" : [ "s3://mybucket/spark/1.5.1/spark.tar.gz" ],
"setupFile" : "s3://mybucket/spark/1.5.1/setupBase-spark.sh",
"status" : "ACTIVE",
"type" : "spark"
}' | http POST 'https://genie.example.com/api/v3/applications' \
'Content-Type:application/json'
Response Documentation
Headers
Name | Description |
---|---|
|
The URI |
Payload Fields
None
HATEOAS Links
None
HTTP Messages
Request
POST /api/v3/applications HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 452
{
"id" : null,
"created" : null,
"updated" : null,
"version" : "1.5.1",
"user" : "genie",
"name" : "spark",
"description" : "Spark for Genie",
"metadata" : null,
"tags" : [ "type:spark", "ver:1.5.1" ],
"configs" : [ "s3://mybucket/spark/1.5.1/spark-env.sh" ],
"dependencies" : [ "s3://mybucket/spark/1.5.1/spark.tar.gz" ],
"setupFile" : "s3://mybucket/spark/1.5.1/setupBase-spark.sh",
"status" : "ACTIVE",
"type" : "spark"
}
Response
HTTP/1.1 201 Created
Location: https://genie.example.com/api/v3/applications/3ffc9fe1-c194-4e22-b0b3-abb68c860b0b
Date: Fri, 16 Sep 2022 00:48:55 GMT
Keep-Alive: timeout=60
Connection: keep-alive
7.2. Get an Application
7.2.1. Description
Get the metadata about an application in the system.
7.2.2. Endpoint
GET /api/v3/applications/{id}
7.2.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/3ffc9fe1-c194-4e22-b0b3-abb68c860b0b' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/applications/3ffc9fe1-c194-4e22-b0b3-abb68c860b0b'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
configs |
Array |
Any configuration files needed for the resource |
true |
|
type |
String |
The type of application this is (e.g. hadoop, presto, spark). Can be used to group. |
true |
|
status |
String |
The status of the application. Options: [ACTIVE, DEPRECATED, INACTIVE] |
Must not be null |
false |
dependencies |
Array |
The dependencies for the application |
true |
HATEOAS Links
Relation | Description |
---|---|
|
URI for this application |
|
Get all the commands using this application |
HTTP Messages
Request
GET /api/v3/applications/3ffc9fe1-c194-4e22-b0b3-abb68c860b0b HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:48:55 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 910
{
"id" : "3ffc9fe1-c194-4e22-b0b3-abb68c860b0b",
"created" : "2022-09-16T00:48:55.995Z",
"updated" : "2022-09-16T00:48:55.995Z",
"version" : "1.5.1",
"user" : "genie",
"name" : "spark",
"description" : "Spark for Genie",
"metadata" : null,
"tags" : [ "type:spark", "genie.id:3ffc9fe1-c194-4e22-b0b3-abb68c860b0b", "ver:1.5.1", "genie.name:spark" ],
"configs" : [ "s3://mybucket/spark/1.5.1/spark-env.sh" ],
"dependencies" : [ "s3://mybucket/spark/1.5.1/spark.tar.gz" ],
"setupFile" : "s3://mybucket/spark/1.5.1/setupBase-spark.sh",
"status" : "ACTIVE",
"type" : "spark",
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/applications/3ffc9fe1-c194-4e22-b0b3-abb68c860b0b"
},
"commands" : {
"href" : "https://genie.example.com/api/v3/applications/3ffc9fe1-c194-4e22-b0b3-abb68c860b0b/commands{?status}",
"templated" : true
}
}
}
7.3. Find Applications
7.3.1. Description
Find applications using various query parameters.
7.3.2. Endpoint
GET /api/v3/applications
7.3.3. API Docs
Request Documentation
Headers
None
Path Parameters
None
Query Parameters
Parameter | Description |
---|---|
|
The page number to get. Default to 0. |
|
The size of the page to get. Default to 64. |
|
The fields to sort the results by. Defaults to 'updated,desc'. |
|
The name of the applications to find. Use % to perform a regex like query |
|
The user of the applications to find. Use % to perform a regex like query |
|
The status(es) of the applications to find. Can have multiple. Options: [ACTIVE, DEPRECATED, INACTIVE] |
|
The tag(s) of the applications to find. Can have multiple. |
|
The type of the applications to find. Use % to perform a regex like query |
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications?status=ACTIVE&status=DEPRECATED&status=%5BACTIVE%2C+DEPRECATED%5D' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/applications?status=ACTIVE&status=DEPRECATED&status=%5BACTIVE%2C+DEPRECATED%5D'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
_links |
Object |
Links to other resources. |
false |
|
page |
Object |
The result page information. |
false |
|
page.size |
Number |
The number of elements in this page result. |
false |
|
page.totalElements |
Number |
The total number of elements this search result could return. |
false |
|
page.totalPages |
Number |
The total number of pages there could be at the current page size. |
false |
|
page.number |
Number |
The current page number. |
false |
|
_embedded.applicationList |
Array |
The found applications. |
false |
HATEOAS Links
Relation | Description |
---|---|
|
The current search |
|
The first page for this search |
|
The previous page for this search |
|
The next page for this search |
|
The last page for this search |
HTTP Messages
Request
GET /api/v3/applications?status=ACTIVE&status=DEPRECATED&status=%5BACTIVE%2C+DEPRECATED%5D HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:48:53 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 6406
{
"_embedded" : {
"applicationList" : [ {
"id" : "63827d36-af06-4ed7-b190-73242341bb12",
"created" : "2022-09-16T00:48:52.154Z",
"updated" : "2022-09-16T00:48:52.154Z",
"version" : "1.0.0",
"user" : "genieUser7",
"name" : "hive",
"description" : "Hive 1.0.0 for Genie",
"metadata" : null,
"tags" : [ "genie.id:63827d36-af06-4ed7-b190-73242341bb12", "type:hive", "genie.name:hive", "ver:1.0.0" ],
"configs" : [ "s3://mybucket/hive/hive-env.sh", "s3://mybucket/hive/hive-log4j.properties" ],
"dependencies" : [ "s3://mybucket/hive/hive-1.0.0.tar.gz" ],
"setupFile" : "s3://mybucket/hive/setupBase-hive.sh",
"status" : "ACTIVE",
"type" : "hive",
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/applications/63827d36-af06-4ed7-b190-73242341bb12"
},
"commands" : {
"href" : "https://genie.example.com/api/v3/applications/63827d36-af06-4ed7-b190-73242341bb12/commands{?status}",
"templated" : true
}
}
}, {
"id" : "e366e39d-8ff7-41e1-8ea9-8ed9421ee22d",
"created" : "2022-09-16T00:48:52.066Z",
"updated" : "2022-09-16T00:48:52.066Z",
"version" : "0.4.0",
"user" : "genieUser6",
"name" : "spark",
"description" : "Pig 0.15.0 for Genie",
"metadata" : null,
"tags" : [ "genie.id:e366e39d-8ff7-41e1-8ea9-8ed9421ee22d", "ver:0.15.0", "type:pig", "genie.name:spark" ],
"configs" : [ "s3://mybucket/pig/pig.properties" ],
"dependencies" : [ "s3://mybucket/pig/pig-0.15.0.tar.gz" ],
"setupFile" : "s3://mybucket/pig/setupBase-pig.sh",
"status" : "ACTIVE",
"type" : "pig",
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/applications/e366e39d-8ff7-41e1-8ea9-8ed9421ee22d"
},
"commands" : {
"href" : "https://genie.example.com/api/v3/applications/e366e39d-8ff7-41e1-8ea9-8ed9421ee22d/commands{?status}",
"templated" : true
}
}
}, {
"id" : "e3e52227-450b-46ed-ba74-04c1d6c63752",
"created" : "2022-09-16T00:48:51.990Z",
"updated" : "2022-09-16T00:48:51.990Z",
"version" : "1.3.1",
"user" : "genieUser5",
"name" : "spark",
"description" : "Spark 1.3.1 for Genie",
"metadata" : null,
"tags" : [ "genie.id:e3e52227-450b-46ed-ba74-04c1d6c63752", "type:spark", "ver:1.3.1", "genie.name:spark" ],
"configs" : [ "s3://mybucket/spark/spark-env.sh" ],
"dependencies" : [ "s3://mybucket/spark/spark-1.3.1.tar.gz" ],
"setupFile" : "s3://mybucket/spark/setupBase-spark.sh",
"status" : "DEPRECATED",
"type" : "spark",
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/applications/e3e52227-450b-46ed-ba74-04c1d6c63752"
},
"commands" : {
"href" : "https://genie.example.com/api/v3/applications/e3e52227-450b-46ed-ba74-04c1d6c63752/commands{?status}",
"templated" : true
}
}
}, {
"id" : "d77ac97a-57d8-4df4-976b-ae308b17d6d8",
"created" : "2022-09-16T00:48:51.833Z",
"updated" : "2022-09-16T00:48:51.833Z",
"version" : "1.4.0",
"user" : "genieUser4",
"name" : "spark",
"description" : "Spark 1.4.0 for Genie",
"metadata" : null,
"tags" : [ "genie.id:d77ac97a-57d8-4df4-976b-ae308b17d6d8", "type:spark", "ver:1.4.0", "genie.name:spark" ],
"configs" : [ "s3://mybucket/spark/spark-env.sh" ],
"dependencies" : [ "s3://mybucket/spark/spark-1.4.0.tar.gz" ],
"setupFile" : "s3://mybucket/spark/setupBase-spark.sh",
"status" : "DEPRECATED",
"type" : "spark",
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/applications/d77ac97a-57d8-4df4-976b-ae308b17d6d8"
},
"commands" : {
"href" : "https://genie.example.com/api/v3/applications/d77ac97a-57d8-4df4-976b-ae308b17d6d8/commands{?status}",
"templated" : true
}
}
}, {
"id" : "9cf565ba-8590-4093-86d9-f9c628a66129",
"created" : "2022-09-16T00:48:51.618Z",
"updated" : "2022-09-16T00:48:51.618Z",
"version" : "1.5.0",
"user" : "genieUser2",
"name" : "spark",
"description" : "Spark 1.5.0 for Genie",
"metadata" : null,
"tags" : [ "genie.id:9cf565ba-8590-4093-86d9-f9c628a66129", "type:spark", "ver:1.5.0", "genie.name:spark" ],
"configs" : [ "s3://mybucket/spark/spark-env.sh" ],
"dependencies" : [ "s3://mybucket/spark/spark-1.5.0.tar.gz" ],
"setupFile" : "s3://mybucket/spark/setupBase-spark.sh",
"status" : "ACTIVE",
"type" : "spark",
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/applications/9cf565ba-8590-4093-86d9-f9c628a66129"
},
"commands" : {
"href" : "https://genie.example.com/api/v3/applications/9cf565ba-8590-4093-86d9-f9c628a66129/commands{?status}",
"templated" : true
}
}
}, {
"id" : "a9b12f0d-0388-482b-8fa1-aeb666ee5b42",
"created" : "2022-09-16T00:48:51.422Z",
"updated" : "2022-09-16T00:48:51.422Z",
"version" : "1.5.1",
"user" : "genieUser1",
"name" : "spark",
"description" : "Spark 1.5.1 for Genie",
"metadata" : null,
"tags" : [ "type:spark", "genie.id:a9b12f0d-0388-482b-8fa1-aeb666ee5b42", "ver:1.5.1", "genie.name:spark" ],
"configs" : [ "s3://mybucket/spark/spark-env.sh" ],
"dependencies" : [ "s3://mybucket/spark/spark-1.5.1.tar.gz" ],
"setupFile" : "s3://mybucket/spark/setupBase-spark.sh",
"status" : "ACTIVE",
"type" : "spark",
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/applications/a9b12f0d-0388-482b-8fa1-aeb666ee5b42"
},
"commands" : {
"href" : "https://genie.example.com/api/v3/applications/a9b12f0d-0388-482b-8fa1-aeb666ee5b42/commands{?status}",
"templated" : true
}
}
} ]
},
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/applications?status=ACTIVE&status=DEPRECATED{&name,user,tag,type}",
"templated" : true
}
},
"page" : {
"size" : 10,
"totalElements" : 6,
"totalPages" : 1,
"number" : 0
}
}
7.4. Update an Entire Application
7.4.1. Description
Update the metadata about an application. This method does a complete replace of the resource. Usual flow is to call to get the most recent state then update what you want and call this API with the result.
For more fine grained control call the PATCH API. |
7.4.2. Endpoint
PUT /api/v3/applications/{id}
7.4.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
configs |
Array |
Any configuration files needed for the resource |
true |
|
type |
String |
The type of application this is (e.g. hadoop, presto, spark). Can be used to group. |
true |
|
status |
String |
The status of the application. Options: [ACTIVE, DEPRECATED, INACTIVE] |
Must not be null |
false |
dependencies |
Array |
The dependencies for the application |
true |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07' -i -X PUT \
-H 'Content-Type: application/json' \
-d '{
"id" : "2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07",
"created" : "2022-09-16T00:48:57.804Z",
"updated" : "2022-09-16T00:48:57.804Z",
"version" : "1.5.1",
"user" : "genie",
"name" : "spark",
"description" : null,
"metadata" : null,
"tags" : [ "genie.id:2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07", "genie.name:spark" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "INACTIVE",
"type" : null
}'
HTTPie
$ echo '{
"id" : "2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07",
"created" : "2022-09-16T00:48:57.804Z",
"updated" : "2022-09-16T00:48:57.804Z",
"version" : "1.5.1",
"user" : "genie",
"name" : "spark",
"description" : null,
"metadata" : null,
"tags" : [ "genie.id:2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07", "genie.name:spark" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "INACTIVE",
"type" : null
}' | http PUT 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07 HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 508
{
"id" : "2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07",
"created" : "2022-09-16T00:48:57.804Z",
"updated" : "2022-09-16T00:48:57.804Z",
"version" : "1.5.1",
"user" : "genie",
"name" : "spark",
"description" : null,
"metadata" : null,
"tags" : [ "genie.id:2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07", "genie.name:spark" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "INACTIVE",
"type" : null
}
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:48:57 GMT
Keep-Alive: timeout=60
Connection: keep-alive
7.5. Update Parts of an Application
7.5.1. Description
Update the metadata about an application using JSON Patch. This will ONLY update the fields you request be changed.
For more information about JSON Patch RFC see the website. |
7.5.2. Endpoint
PATCH /api/v3/applications/{id}
7.5.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of patches to apply |
false |
|
[].op |
String |
Patch operation to perform. |
add, remove, replace, copy, move, test |
false |
[].path |
String |
The json path to operate on. e.g. /user |
false |
|
[].from |
String |
The json path to move or copy from. e.g. /user |
true |
|
[].value |
String |
The json value to put at the path for an add, replace or test |
true |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07' -i -X PATCH \
-H 'Content-Type: application/json' \
-d '[ {
"op" : "replace",
"path" : "/user",
"value" : "e31cad65-dd73-4fd5-a2e0-12088a8fe61a"
} ]'
HTTPie
$ echo '[ {
"op" : "replace",
"path" : "/user",
"value" : "e31cad65-dd73-4fd5-a2e0-12088a8fe61a"
} ]' | http PATCH 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07' \
'Content-Type:application/json'
HTTP Messages
Request
PATCH /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07 HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 98
[ {
"op" : "replace",
"path" : "/user",
"value" : "e31cad65-dd73-4fd5-a2e0-12088a8fe61a"
} ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:48:50 GMT
Keep-Alive: timeout=60
Connection: keep-alive
7.6. Delete All Applications
7.6.1. Description
Delete all the applications currently stored in the system.
7.6.2. Endpoint
DELETE /api/v3/applications
7.6.3. API Docs
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/applications'
HTTP Messages
Request
DELETE /api/v3/applications HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:48:56 GMT
Keep-Alive: timeout=60
Connection: keep-alive
7.7. Delete an Application
7.7.1. Description
Delete an application currently configured in the system.
7.7.2. Endpoint
DELETE /api/v3/applications/{id}
7.7.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/fdfaba27-7cb6-48dc-850c-c80795f75193' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/applications/fdfaba27-7cb6-48dc-850c-c80795f75193'
HTTP Messages
Request
DELETE /api/v3/applications/fdfaba27-7cb6-48dc-850c-c80795f75193 HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:48:56 GMT
Keep-Alive: timeout=60
Connection: keep-alive
7.8. Get Configs for Application
7.8.1. Description
Get the configuration file locations for an application.
7.8.2. Endpoint
GET /api/v3/applications/{id}/configs
7.8.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/configs' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/configs'
Response Documentation
Headers
Name | Description |
---|---|
|
application/json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of configuration file locations |
false |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/configs HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:48:59 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 82
[ "deb441f5-f38c-4202-92e5-df252e155cd8", "02e98fed-47a1-48e6-8632-dbb4e62ae862" ]
7.9. Add Configs to Application
7.9.1. Description
Add configuration file locations to an existing application. Configurations are stored as a set so any duplicates will be ignored.
7.9.2. Endpoint
POST /api/v3/applications/{id}/configs
7.9.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of configuration file locations |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/configs' -i -X POST \
-H 'Content-Type: application/json' \
-d '[ "02e98fed-47a1-48e6-8632-dbb4e62ae862", "deb441f5-f38c-4202-92e5-df252e155cd8" ]'
HTTPie
$ echo '[ "02e98fed-47a1-48e6-8632-dbb4e62ae862", "deb441f5-f38c-4202-92e5-df252e155cd8" ]' | http POST 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/configs' \
'Content-Type:application/json'
HTTP Messages
Request
POST /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/configs HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 82
[ "02e98fed-47a1-48e6-8632-dbb4e62ae862", "deb441f5-f38c-4202-92e5-df252e155cd8" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:48:59 GMT
Keep-Alive: timeout=60
Connection: keep-alive
7.10. Update Configs for an Application
7.10.1. Description
Update the configuration file locations for an existing application. Stored as a set so duplicates are ignored.
7.10.2. Endpoint
PUT /api/v3/applications/{id}/configs
7.10.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of configuration file locations |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/configs' -i -X PUT \
-H 'Content-Type: application/json' \
-d '[ "b50bbfd2-18be-4dbe-bc2f-41fc576b22b5" ]'
HTTPie
$ echo '[ "b50bbfd2-18be-4dbe-bc2f-41fc576b22b5" ]' | http PUT 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/configs' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/configs HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 42
[ "b50bbfd2-18be-4dbe-bc2f-41fc576b22b5" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:48:57 GMT
Keep-Alive: timeout=60
Connection: keep-alive
7.11. Remove All Configs From an Application
7.11.1. Description
Remove all the configuration file locations for an existing application.
7.11.2. Endpoint
DELETE /api/v3/applications/{id}/configs
7.11.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/configs' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/configs'
HTTP Messages
Request
DELETE /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/configs HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:48:58 GMT
Keep-Alive: timeout=60
Connection: keep-alive
7.12. Get Dependencies For an Application
7.12.1. Description
Get the dependency file locations for an application.
7.12.2. Endpoint
GET /api/v3/applications/{id}/dependencies
7.12.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/dependencies' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/dependencies'
Response Documentation
Headers
Name | Description |
---|---|
|
application/json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of dependency file locations |
false |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/dependencies HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:48:56 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 82
[ "102d6a3c-1bb0-4805-9f45-af21682ab271", "008f6307-4260-4907-97a0-0947311bc482" ]
7.13. Add Dependencies to Application
7.13.1. Description
Add dependency file locations to an existing application. Stored as a set so all duplicates are ignored.
7.13.2. Endpoint
POST /api/v3/applications/{id}/dependencies
7.13.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of dependency file locations |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/dependencies' -i -X POST \
-H 'Content-Type: application/json' \
-d '[ "008f6307-4260-4907-97a0-0947311bc482", "102d6a3c-1bb0-4805-9f45-af21682ab271" ]'
HTTPie
$ echo '[ "008f6307-4260-4907-97a0-0947311bc482", "102d6a3c-1bb0-4805-9f45-af21682ab271" ]' | http POST 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/dependencies' \
'Content-Type:application/json'
HTTP Messages
Request
POST /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/dependencies HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 82
[ "008f6307-4260-4907-97a0-0947311bc482", "102d6a3c-1bb0-4805-9f45-af21682ab271" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:48:56 GMT
Keep-Alive: timeout=60
Connection: keep-alive
7.14. Update Dependencies for an Application
7.14.1. Description
Update the dependency file locations for an existing application
7.14.2. Endpoint
PUT /api/v3/applications/{id}/dependencies
7.14.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of dependency file locations |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/dependencies' -i -X PUT \
-H 'Content-Type: application/json' \
-d '[ "6ec6c3fd-7c8d-494e-88da-3a8c235dc934" ]'
HTTPie
$ echo '[ "6ec6c3fd-7c8d-494e-88da-3a8c235dc934" ]' | http PUT 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/dependencies' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/dependencies HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 42
[ "6ec6c3fd-7c8d-494e-88da-3a8c235dc934" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:48:59 GMT
Keep-Alive: timeout=60
Connection: keep-alive
7.15. Remove All Dependencies From an Application
7.15.1. Description
Remove all the dependency file locations for an existing application.
7.15.2. Endpoint
DELETE /api/v3/applications/{id}/dependencies
7.15.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/dependencies' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/dependencies'
HTTP Messages
Request
DELETE /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/dependencies HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:48:58 GMT
Keep-Alive: timeout=60
Connection: keep-alive
7.16. Get Tags For an Application
7.16.1. Description
Get the tags for an application.
7.16.2. Endpoint
GET /api/v3/applications/{id}/tags
7.16.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/tags' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/tags'
Response Documentation
Headers
Name | Description |
---|---|
|
application/json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of tags |
false |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/tags HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:48:56 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 188
[ "5dddbfdf-44ac-46bf-92d4-71a9e1eb2cd1", "genie.id:2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07", "genie.name:spark", "7fab86b9-a394-423f-8d19-f0c47723d3db" ]
7.17. Add Tags to Application
7.17.1. Description
Add tags to an existing application. Stored as a set so all duplicates are ignored.
genie.id:{id} and genie.name:{name} tags are automatically added by the service.
|
7.17.2. Endpoint
POST /api/v3/applications/{id}/tags
7.17.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of tags |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/tags' -i -X POST \
-H 'Content-Type: application/json' \
-d '[ "5dddbfdf-44ac-46bf-92d4-71a9e1eb2cd1", "7fab86b9-a394-423f-8d19-f0c47723d3db" ]'
HTTPie
$ echo '[ "5dddbfdf-44ac-46bf-92d4-71a9e1eb2cd1", "7fab86b9-a394-423f-8d19-f0c47723d3db" ]' | http POST 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/tags' \
'Content-Type:application/json'
HTTP Messages
Request
POST /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/tags HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 82
[ "5dddbfdf-44ac-46bf-92d4-71a9e1eb2cd1", "7fab86b9-a394-423f-8d19-f0c47723d3db" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:48:56 GMT
Keep-Alive: timeout=60
Connection: keep-alive
7.18. Update Tags for an Application
7.18.1. Description
Update the tags for an existing application.
The genie.id:{id} and genie.name:{name} tags can’t be removed. They will automatically be added back
by the system.
|
7.18.2. Endpoint
PUT /api/v3/applications/{id}/tags
7.18.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of tags |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/tags' -i -X PUT \
-H 'Content-Type: application/json' \
-d '[ "b7239dd3-ea2b-465b-8110-f44027e6911c" ]'
HTTPie
$ echo '[ "b7239dd3-ea2b-465b-8110-f44027e6911c" ]' | http PUT 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/tags' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/tags HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 42
[ "b7239dd3-ea2b-465b-8110-f44027e6911c" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:48:55 GMT
Keep-Alive: timeout=60
Connection: keep-alive
7.19. Remove All Tags From Application
7.19.1. Description
Remove all the tags for an existing application
The genie.id:{id} and genie.name:{name} tags will NOT be removed by this operation
|
7.19.2. Endpoint
DELETE /api/v3/applications/{id}/tags
7.19.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/tags' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/tags'
HTTP Messages
Request
DELETE /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/tags HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:48:58 GMT
Keep-Alive: timeout=60
Connection: keep-alive
7.20. Remove Tag From Application
7.20.1. Description
Remove a tag from an existing application.
You can’t remove the genie.id:{id} and genie.name:{name} tags. They will just be added back by the system
|
7.20.2. Endpoint
DELETE /api/v3/applications/{id}/tags/{tag}
7.20.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
|
The tag to remove |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/tags/0ab2ac6a-0342-43d9-8829-51c0493e9b7e' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/tags/0ab2ac6a-0342-43d9-8829-51c0493e9b7e'
HTTP Messages
Request
DELETE /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/tags/0ab2ac6a-0342-43d9-8829-51c0493e9b7e HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:48:54 GMT
Keep-Alive: timeout=60
Connection: keep-alive
7.21. Get the Commands that Use an Application
7.21.1. Description
Search the commands that use the given application.
7.21.2. Endpoint
GET /api/v3/applications/{id}/commands
7.21.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
Parameter | Description |
---|---|
|
The status of commands to search for |
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/commands?status=ACTIVE&status=INACTIVE&status=%5BACTIVE%2C+INACTIVE%5D' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/commands?status=ACTIVE&status=INACTIVE&status=%5BACTIVE%2C+INACTIVE%5D'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
The list of commands found |
false |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/applications/2ebee039-71c0-4a2c-8ac3-6ad92d3b09a4.a688eedd-e0e8-4999-94df-01d59adbdb07/commands?status=ACTIVE&status=INACTIVE&status=%5BACTIVE%2C+INACTIVE%5D HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:48:58 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1283
[ {
"id" : "a90b567a-4f81-484f-8da1-05d6f2ec6615",
"created" : "2022-09-16T00:48:58.611Z",
"updated" : "2022-09-16T00:48:58.742Z",
"version" : "32b6dec1-ebd1-4dc6-b330-a29a15ca33d8",
"user" : "32b6dec1-ebd1-4dc6-b330-a29a15ca33d8",
"name" : "32b6dec1-ebd1-4dc6-b330-a29a15ca33d8",
"description" : null,
"metadata" : null,
"tags" : [ "genie.id:a90b567a-4f81-484f-8da1-05d6f2ec6615", "genie.name:32b6dec1-ebd1-4dc6-b330-a29a15ca33d8" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "ACTIVE",
"executable" : "bash",
"executableAndArguments" : [ "bash" ],
"checkDelay" : 10000,
"memory" : null,
"clusterCriteria" : [ ],
"runtime" : {
"resources" : {
"cpu" : null,
"gpu" : null,
"memoryMb" : null,
"diskMb" : null,
"networkMbps" : null
},
"images" : { }
},
"links" : [ {
"rel" : "self",
"href" : "https://genie.example.com/api/v3/commands/a90b567a-4f81-484f-8da1-05d6f2ec6615"
}, {
"rel" : "applications",
"href" : "https://genie.example.com/api/v3/commands/a90b567a-4f81-484f-8da1-05d6f2ec6615/applications"
}, {
"rel" : "clusters",
"href" : "https://genie.example.com/api/v3/commands/a90b567a-4f81-484f-8da1-05d6f2ec6615/clusters{?status}"
} ]
} ]
8. Clusters API
8.1. Create a Cluster
8.1.1. Description
Create a new cluster in the system.
8.1.2. Endpoint
POST /api/v3/clusters
The id in this example is optional. If you include one Genie will use it. If not it will provide one. If you provide one it must be unique. |
8.1.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
None
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
configs |
Array |
Any configuration files needed for the resource |
true |
|
status |
String |
The status of the cluster. Options: [UP, OUT_OF_SERVICE, TERMINATED] |
Must not be null |
false |
dependencies |
Array |
The dependencies for the cluster |
true |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters' -i -X POST \
-H 'Content-Type: application/json' \
-d '{
"id" : null,
"created" : null,
"updated" : null,
"version" : "2.7.1",
"user" : "genie",
"name" : "h2prod",
"description" : null,
"metadata" : null,
"tags" : [ ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "UP"
}'
HTTPie
$ echo '{
"id" : null,
"created" : null,
"updated" : null,
"version" : "2.7.1",
"user" : "genie",
"name" : "h2prod",
"description" : null,
"metadata" : null,
"tags" : [ ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "UP"
}' | http POST 'https://genie.example.com/api/v3/clusters' \
'Content-Type:application/json'
Response Documentation
Headers
Name | Description |
---|---|
|
The URI |
Payload Fields
None
HATEOAS Links
None
HTTP Messages
Request
POST /api/v3/clusters HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 266
{
"id" : null,
"created" : null,
"updated" : null,
"version" : "2.7.1",
"user" : "genie",
"name" : "h2prod",
"description" : null,
"metadata" : null,
"tags" : [ ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "UP"
}
Response
HTTP/1.1 201 Created
Location: https://genie.example.com/api/v3/clusters/012132e3-0d26-40e0-a967-57bafbbe1329
Date: Fri, 16 Sep 2022 00:48:59 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.2. Get a Cluster
8.2.1. Description
Get the metadata about a cluster in the system.
8.2.2. Endpoint
GET /api/v3/clusters/{id}
8.2.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/012132e3-0d26-40e0-a967-57bafbbe1329' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/clusters/012132e3-0d26-40e0-a967-57bafbbe1329'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
configs |
Array |
Any configuration files needed for the resource |
true |
|
status |
String |
The status of the cluster. Options: [UP, OUT_OF_SERVICE, TERMINATED] |
Must not be null |
false |
dependencies |
Array |
The dependencies for the cluster |
true |
HATEOAS Links
Relation | Description |
---|---|
|
URI for this cluster |
|
Get all the commands this cluster can use |
HTTP Messages
Request
GET /api/v3/clusters/012132e3-0d26-40e0-a967-57bafbbe1329 HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:48:59 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 716
{
"id" : "012132e3-0d26-40e0-a967-57bafbbe1329",
"created" : "2022-09-16T00:49:00.668Z",
"updated" : "2022-09-16T00:49:00.668Z",
"version" : "2.7.1",
"user" : "genie",
"name" : "h2prod",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:h2prod", "genie.id:012132e3-0d26-40e0-a967-57bafbbe1329" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "UP",
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/clusters/012132e3-0d26-40e0-a967-57bafbbe1329"
},
"commands" : {
"href" : "https://genie.example.com/api/v3/clusters/012132e3-0d26-40e0-a967-57bafbbe1329/commands{?status}",
"templated" : true
}
}
}
8.3. Find Clusters
8.3.1. Description
Find clusters using various query parameters.
8.3.2. Endpoint
GET /api/v3/clusters
8.3.3. API Docs
Request Documentation
Headers
None
Path Parameters
None
Query Parameters
Parameter | Description |
---|---|
|
The page number to get. Default to 0. |
|
The size of the page to get. Default to 64. |
|
The fields to sort the results by. Defaults to 'updated,desc'. |
|
The name of the clusters to find. Use % to perform a regex like query |
|
The status(es) of the clusters to find. Can have multiple. Options: [UP, OUT_OF_SERVICE, TERMINATED] |
|
The tag(s) of the clusters to find. Can have multiple. |
|
The minimum time (in milliseconds from epoch UTC) that the cluster(s) were updated at. |
|
The maximum time (in milliseconds from epoch UTC) that the cluster(s) were updated at. |
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters?tag=genie.id%3A827493ee-d0b0-4b81-83c6-f6a329616438' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/clusters?tag=genie.id%3A827493ee-d0b0-4b81-83c6-f6a329616438'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
_links |
Object |
Links to other resources. |
false |
|
page |
Object |
The result page information. |
false |
|
page.size |
Number |
The number of elements in this page result. |
false |
|
page.totalElements |
Number |
The total number of elements this search result could return. |
false |
|
page.totalPages |
Number |
The total number of pages there could be at the current page size. |
false |
|
page.number |
Number |
The current page number. |
false |
|
_embedded.clusterList |
Array |
The found clusters. |
false |
HATEOAS Links
Relation | Description |
---|---|
|
The current search |
|
The first page for this search |
|
The previous page for this search |
|
The next page for this search |
|
The last page for this search |
HTTP Messages
Request
GET /api/v3/clusters?tag=genie.id%3A827493ee-d0b0-4b81-83c6-f6a329616438 HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:49:07 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1298
{
"_embedded" : {
"clusterList" : [ {
"id" : "827493ee-d0b0-4b81-83c6-f6a329616438",
"created" : "2022-09-16T00:49:05.599Z",
"updated" : "2022-09-16T00:49:05.599Z",
"version" : "3acdea04-7afc-422f-813f-f3a084189e79",
"user" : "8a79948e-2a41-43ef-b963-ebe116d256de",
"name" : "5cbb968a-7a88-46d6-9166-acf1343d2559",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:5cbb968a-7a88-46d6-9166-acf1343d2559", "genie.id:827493ee-d0b0-4b81-83c6-f6a329616438" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "UP",
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/clusters/827493ee-d0b0-4b81-83c6-f6a329616438"
},
"commands" : {
"href" : "https://genie.example.com/api/v3/clusters/827493ee-d0b0-4b81-83c6-f6a329616438/commands{?status}",
"templated" : true
}
}
} ]
},
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/clusters?tag=genie.id%3A827493ee-d0b0-4b81-83c6-f6a329616438{&name,status,minUpdateTime,maxUpdateTime}",
"templated" : true
}
},
"page" : {
"size" : 1,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
8.4. Update an Entire Cluster
8.4.1. Description
Update the metadata about a cluster. This method does a complete replace of the resource. Usual flow is to call to get the most recent state then update what you want and call this API with the result.
For more fine grained control call the PATCH API. |
8.4.2. Endpoint
PUT /api/v3/clusters/{id}
8.4.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
configs |
Array |
Any configuration files needed for the resource |
true |
|
status |
String |
The status of the cluster. Options: [UP, OUT_OF_SERVICE, TERMINATED] |
Must not be null |
false |
dependencies |
Array |
The dependencies for the cluster |
true |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d' -i -X PUT \
-H 'Content-Type: application/json' \
-d '{
"id" : "49fe0fc2-f1fa-4c63-ad02-9ba96fce368d",
"created" : "2022-09-16T00:49:08.931Z",
"updated" : "2022-09-16T00:49:08.931Z",
"version" : "2.7.1",
"user" : "genie",
"name" : "h2prod",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:h2prod", "genie.id:49fe0fc2-f1fa-4c63-ad02-9ba96fce368d" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "OUT_OF_SERVICE"
}'
HTTPie
$ echo '{
"id" : "49fe0fc2-f1fa-4c63-ad02-9ba96fce368d",
"created" : "2022-09-16T00:49:08.931Z",
"updated" : "2022-09-16T00:49:08.931Z",
"version" : "2.7.1",
"user" : "genie",
"name" : "h2prod",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:h2prod", "genie.id:49fe0fc2-f1fa-4c63-ad02-9ba96fce368d" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "OUT_OF_SERVICE"
}' | http PUT 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 425
{
"id" : "49fe0fc2-f1fa-4c63-ad02-9ba96fce368d",
"created" : "2022-09-16T00:49:08.931Z",
"updated" : "2022-09-16T00:49:08.931Z",
"version" : "2.7.1",
"user" : "genie",
"name" : "h2prod",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:h2prod", "genie.id:49fe0fc2-f1fa-4c63-ad02-9ba96fce368d" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "OUT_OF_SERVICE"
}
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:08 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.5. Update Parts of a Cluster
8.5.1. Description
Update the metadata about a cluster using JSON Patch. This will ONLY update the fields you request be changed.
For more information about JSON Patch RFC see the website. |
8.5.2. Endpoint
PATCH /api/v3/clusters/{id}
8.5.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of patches to apply |
false |
|
[].op |
String |
Patch operation to perform. |
add, remove, replace, copy, move, test |
false |
[].path |
String |
The json path to operate on. e.g. /user |
false |
|
[].from |
String |
The json path to move or copy from. e.g. /user |
true |
|
[].value |
String |
The json value to put at the path for an add, replace or test |
true |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d' -i -X PATCH \
-H 'Content-Type: application/json' \
-d '[ {
"op" : "replace",
"path" : "/name",
"value" : "839ad0e4-313f-4fe2-9879-bce135e91de3"
} ]'
HTTPie
$ echo '[ {
"op" : "replace",
"path" : "/name",
"value" : "839ad0e4-313f-4fe2-9879-bce135e91de3"
} ]' | http PATCH 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d' \
'Content-Type:application/json'
HTTP Messages
Request
PATCH /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 98
[ {
"op" : "replace",
"path" : "/name",
"value" : "839ad0e4-313f-4fe2-9879-bce135e91de3"
} ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:09 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.6. Delete All Clusters
8.6.1. Description
Delete all the clusters currently stored in the system.
You won’t be able to delete any cluster that has run any job that is still in the system to maintain the ability for users to look up information about their job (where it ran, etc) |
8.6.2. Endpoint
DELETE /api/v3/clusters
8.6.3. API Docs
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/clusters'
HTTP Messages
Request
DELETE /api/v3/clusters HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:07 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.7. Delete a Cluster
8.7.1. Description
Delete a cluster currently configured in the system.
You won’t be able to delete a cluster that has run any job that is still in the system to maintain the ability for users to look up information about their job (where it ran, etc) |
8.7.2. Endpoint
DELETE /api/v3/clusters/{id}
8.7.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/1c41a36c-c52a-4bfe-ab35-8b32cf3c305e' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/clusters/1c41a36c-c52a-4bfe-ab35-8b32cf3c305e'
HTTP Messages
Request
DELETE /api/v3/clusters/1c41a36c-c52a-4bfe-ab35-8b32cf3c305e HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:48:59 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.8. Get Configs for Cluster
8.8.1. Description
Get the configuration file locations for a cluster.
8.8.2. Endpoint
GET /api/v3/clusters/{id}/configs
8.8.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/configs' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/configs'
Response Documentation
Headers
Name | Description |
---|---|
|
application/json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of configuration file locations |
false |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/configs HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:49:02 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 82
[ "eb4aabf4-7127-4af7-adb5-90d7b2d3571a", "a8132075-097c-47a5-a56d-06bc72a06621" ]
8.9. Add Configs to Cluster
8.9.1. Description
Add configuration file locations to an existing cluster.
Configurations are stored as a set so any duplicates will be ignored. |
8.9.2. Endpoint
POST /api/v3/clusters/{id}/configs
8.9.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of configuration file locations |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/configs' -i -X POST \
-H 'Content-Type: application/json' \
-d '[ "eb4aabf4-7127-4af7-adb5-90d7b2d3571a", "a8132075-097c-47a5-a56d-06bc72a06621" ]'
HTTPie
$ echo '[ "eb4aabf4-7127-4af7-adb5-90d7b2d3571a", "a8132075-097c-47a5-a56d-06bc72a06621" ]' | http POST 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/configs' \
'Content-Type:application/json'
HTTP Messages
Request
POST /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/configs HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 82
[ "eb4aabf4-7127-4af7-adb5-90d7b2d3571a", "a8132075-097c-47a5-a56d-06bc72a06621" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:02 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.10. Update Configs for a Cluster
8.10.1. Description
Update the configuration file locations for an existing cluster. Stored as a set so duplicates are ignored.
8.10.2. Endpoint
PUT /api/v3/clusters/{id}/configs
8.10.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of configuration file locations |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/configs' -i -X PUT \
-H 'Content-Type: application/json' \
-d '[ "66e77a13-d7ab-4c41-a48c-b481907baef6" ]'
HTTPie
$ echo '[ "66e77a13-d7ab-4c41-a48c-b481907baef6" ]' | http PUT 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/configs' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/configs HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 42
[ "66e77a13-d7ab-4c41-a48c-b481907baef6" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:08 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.11. Remove All Configs From a Cluster
8.11.1. Description
Remove all the configuration file locations for an existing cluster.
8.11.2. Endpoint
DELETE /api/v3/clusters/{id}/configs
8.11.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/configs' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/configs'
HTTP Messages
Request
DELETE /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/configs HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:01 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.12. Get Dependencies For an Cluster
8.12.1. Description
Get the dependency file locations for a cluster.
8.12.2. Endpoint
GET /api/v3/clusters/{id}/dependencies
8.12.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/dependencies' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/dependencies'
Response Documentation
Headers
Name | Description |
---|---|
|
application/json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of dependency file locations |
false |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/dependencies HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:49:02 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 82
[ "a39414e4-cffd-4511-aa25-9192d517cd52", "66e5e5a4-3880-4439-a0dc-1408b7f80944" ]
8.13. Add Dependencies to Cluster
8.13.1. Description
Add dependency file locations to an existing cluster. Stored as a set so all duplicates are ignored.
8.13.2. Endpoint
POST /api/v3/clusters/{id}/dependencies
8.13.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of dependency file locations |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/dependencies' -i -X POST \
-H 'Content-Type: application/json' \
-d '[ "a39414e4-cffd-4511-aa25-9192d517cd52", "66e5e5a4-3880-4439-a0dc-1408b7f80944" ]'
HTTPie
$ echo '[ "a39414e4-cffd-4511-aa25-9192d517cd52", "66e5e5a4-3880-4439-a0dc-1408b7f80944" ]' | http POST 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/dependencies' \
'Content-Type:application/json'
HTTP Messages
Request
POST /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/dependencies HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 82
[ "a39414e4-cffd-4511-aa25-9192d517cd52", "66e5e5a4-3880-4439-a0dc-1408b7f80944" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:02 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.14. Update Dependencies for an Cluster
8.14.1. Description
Update the dependency file locations for an existing cluster
8.14.2. Endpoint
PUT /api/v3/clusters/{id}/dependencies
8.14.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of dependency file locations |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/configs' -i -X PUT \
-H 'Content-Type: application/json' \
-d '[ "eb9701b4-15ce-4c5f-96aa-303fc58cce06" ]'
HTTPie
$ echo '[ "eb9701b4-15ce-4c5f-96aa-303fc58cce06" ]' | http PUT 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/configs' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/configs HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 42
[ "eb9701b4-15ce-4c5f-96aa-303fc58cce06" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:07 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.15. Remove All Dependencies From an Cluster
8.15.1. Description
Remove all the dependency file locations for an existing cluster.
8.15.2. Endpoint
DELETE /api/v3/clusters/{id}/dependencies
8.15.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/dependencies' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/dependencies'
HTTP Messages
Request
DELETE /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/dependencies HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:02 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.16. Get Tags For a Cluster
8.16.1. Description
Get the tags for a cluster.
8.16.2. Endpoint
GET /api/v3/clusters/{id}/tags
8.16.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/tags' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/tags'
Response Documentation
Headers
Name | Description |
---|---|
|
application/json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of tags |
false |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/tags HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:49:08 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 152
[ "5df487a1-c2b7-4845-9ba2-68b698d2e868", "genie.name:h2prod", "genie.id:49fe0fc2-f1fa-4c63-ad02-9ba96fce368d", "cc0a9caa-2882-473f-ae05-6fc53b719ae9" ]
8.17. Add Tags to Cluster
8.17.1. Description
Add tags to an existing cluster. Stored as a set so all duplicates are ignored.
genie.id:{id} and genie.name:{name} tags are automatically added by the service.
|
8.17.2. Endpoint
POST /api/v3/clusters/{id}/tags
8.17.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of tags |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/tags' -i -X POST \
-H 'Content-Type: application/json' \
-d '[ "5df487a1-c2b7-4845-9ba2-68b698d2e868", "cc0a9caa-2882-473f-ae05-6fc53b719ae9" ]'
HTTPie
$ echo '[ "5df487a1-c2b7-4845-9ba2-68b698d2e868", "cc0a9caa-2882-473f-ae05-6fc53b719ae9" ]' | http POST 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/tags' \
'Content-Type:application/json'
HTTP Messages
Request
POST /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/tags HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 82
[ "5df487a1-c2b7-4845-9ba2-68b698d2e868", "cc0a9caa-2882-473f-ae05-6fc53b719ae9" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:08 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.18. Update Tags for a Cluster
8.18.1. Description
Update the tags for an existing cluster.
The genie.id:{id} and genie.name:{name} tags can’t be removed. They will automatically be added back
by the system.
|
8.18.2. Endpoint
PUT /api/v3/clusters/{id}/tags
8.18.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of tags |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/tags' -i -X PUT \
-H 'Content-Type: application/json' \
-d '[ "8feb6ae5-9eef-4c18-a1be-29de590fd7a1" ]'
HTTPie
$ echo '[ "8feb6ae5-9eef-4c18-a1be-29de590fd7a1" ]' | http PUT 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/tags' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/tags HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 42
[ "8feb6ae5-9eef-4c18-a1be-29de590fd7a1" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:08 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.19. Remove All Tags From Cluster
8.19.1. Description
Remove all the tags for an existing cluster
The genie.id:{id} and genie.name:{name} tags will NOT be removed by this operation
|
8.19.2. Endpoint
DELETE /api/v3/clusters/{id}/tags
8.19.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/tags' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/tags'
HTTP Messages
Request
DELETE /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/tags HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:01 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.20. Remove Tag From Cluster
8.20.1. Description
Remove a tag from an existing cluster.
You can’t remove the genie.id:{id} and genie.name:{name} tags. They will just be added back by the system
|
8.20.2. Endpoint
DELETE /api/v3/clusters/{id}/tags/{tag}
8.20.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
|
The tag to remove |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/tags/daff344d-d9c2-40e7-93b7-6a942f853194' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/tags/daff344d-d9c2-40e7-93b7-6a942f853194'
HTTP Messages
Request
DELETE /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/tags/daff344d-d9c2-40e7-93b7-6a942f853194 HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:08 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.21. Add Commands to a Cluster
Deprecated |
As of Genie 4.0.0 commands are no longer hard linked to clusters, instead they are dynamically linked by
resolving a command’s cluster criteria against the current set of UP clusters. This API is now a no-op.
|
8.21.1. Endpoint
POST /api/v3/clusters/{id}/commands
8.21.2. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of command ids (in preferred order) to append to the existing list of commands |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/commands' -i -X POST \
-H 'Content-Type: application/json' \
-d '[ "3a936202-0725-4acd-ad1b-9c9550f93e51", "af479f29-6956-464a-b38d-79958faded7a" ]'
HTTPie
$ echo '[ "3a936202-0725-4acd-ad1b-9c9550f93e51", "af479f29-6956-464a-b38d-79958faded7a" ]' | http POST 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/commands' \
'Content-Type:application/json'
HTTP Messages
Request
POST /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/commands HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 82
[ "3a936202-0725-4acd-ad1b-9c9550f93e51", "af479f29-6956-464a-b38d-79958faded7a" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:02 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.22. Get the Commands for a Cluster
Deprecated |
As of Genie 4.0.0 commands are no longer hard linked to clusters, instead they are dynamically linked by
resolving a command’s cluster criteria against the current set of UP clusters. This API is now a no-op.
|
8.22.1. Endpoint
GET /api/v3/clusters/{id}/commands
8.22.2. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
Parameter | Description |
---|---|
|
The status of commands to search for |
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/commands?status=ACTIVE' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/commands?status=ACTIVE'
HTTP Messages
Request
GET /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/commands?status=ACTIVE HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:49:02 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 3
[ ]
8.23. Set Commands for a Cluster
Deprecated |
As of Genie 4.0.0 commands are no longer hard linked to clusters, instead they are dynamically linked by
resolving a command’s cluster criteria against the current set of UP clusters. This API is now a no-op.
|
8.23.1. Endpoint
PUT /api/v3/clusters/{id}/commands
8.23.2. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of command ids (in preferred order) to replace the existing list of commands |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/commands' -i -X PUT \
-H 'Content-Type: application/json' \
-d '[ "45345496-7ff2-4344-bbca-674b0e4aa5d0", "c4ae36c5-0b56-4fd3-baea-3cf9635e0b06" ]'
HTTPie
$ echo '[ "45345496-7ff2-4344-bbca-674b0e4aa5d0", "c4ae36c5-0b56-4fd3-baea-3cf9635e0b06" ]' | http PUT 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/commands' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/commands HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 82
[ "45345496-7ff2-4344-bbca-674b0e4aa5d0", "c4ae36c5-0b56-4fd3-baea-3cf9635e0b06" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:02 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.24. Remove All Commands From a Cluster
Deprecated |
As of Genie 4.0.0 commands are no longer hard linked to clusters, instead they are dynamically linked by
resolving a command’s cluster criteria against the current set of UP clusters. This API is now a no-op.
|
8.24.1. Endpoint
DELETE /api/v3/clusters/{id}/commands
8.24.2. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/commands' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/commands'
HTTP Messages
Request
DELETE /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/commands HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:02 GMT
Keep-Alive: timeout=60
Connection: keep-alive
8.25. Remove A Single Command From a Cluster
Deprecated |
As of Genie 4.0.0 commands are no longer hard linked to clusters, instead they are dynamically linked by
resolving a command’s cluster criteria against the current set of UP clusters. This API is now a no-op.
|
8.25.1. Endpoint
DELETE /api/v3/clusters/{id}/commands/{commandId}
8.25.2. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
|
The id of the command to remove |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/commands/5ce4aded-9678-4de5-975c-f4bf30de4fd4' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/commands/5ce4aded-9678-4de5-975c-f4bf30de4fd4'
HTTP Messages
Request
DELETE /api/v3/clusters/49fe0fc2-f1fa-4c63-ad02-9ba96fce368d/commands/5ce4aded-9678-4de5-975c-f4bf30de4fd4 HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:01 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9. Commands API
9.1. Create a Command
9.1.1. Description
Create a new command in the system.
9.1.2. Endpoint
POST /api/v3/commands
The id in this example is optional. If you include one Genie will use it. If not it will provide one. If you provide one it must be unique. |
9.1.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
None
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
configs |
Array |
Any configuration files needed for the resource |
true |
|
status |
String |
The status of the command. Options: [ACTIVE, DEPRECATED, INACTIVE] |
Must not be null |
false |
executable |
String |
The executable to run on the Genie node when this command is used. e.g. /usr/bin/hadoop |
Must not be empty. Size must be between 0 and 1024 inclusive |
false |
executableAndArguments |
Array |
The executable and arguments to run on the Genie node when this command is used. e.g. /usr/bin/hadoop |
Must not be empty |
false |
checkDelay |
Number |
Deprecated as of 4.3.0. Now is a no-op on the server side. |
false |
|
memory |
Number |
The default amount of memory (in MB) that should be allocated for instances of this command client |
Must be at least 1 |
true |
dependencies |
Array |
The dependencies for the command |
true |
|
clusterCriteria |
Array |
The priority ordered list of criteria to resolve clusters that this command can run jobs on |
true |
|
runtime |
Object |
The various job runtime parameters that should be used if this command is used |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands' -i -X POST \
-H 'Content-Type: application/json' \
-d '{
"id" : null,
"created" : null,
"updated" : null,
"version" : "1.0.0",
"user" : "genie",
"name" : "hive",
"description" : "Hive command v1.0.0",
"metadata" : null,
"tags" : [ "tag:bar", "tag:foo" ],
"configs" : [ "s3:///path/to/config-foo", "s3:///path/to/config-bar" ],
"dependencies" : [ "/path/to/file/foo", "/path/to/file/bar" ],
"setupFile" : null,
"status" : "ACTIVE",
"executable" : "/apps/hive/bin/hive",
"executableAndArguments" : [ "/apps/hive/bin/hive" ],
"checkDelay" : 10000,
"memory" : 1024,
"clusterCriteria" : [ {
"id" : "b1c89fba-2343-43cc-9e85-93a5eb4d5df4",
"name" : null,
"version" : null,
"status" : null,
"tags" : [ "d6fe286e-3d9f-4b74-b0fb-b0b28cbb6b05", "577d167c-87b0-4b47-a4a8-fe0658585867" ]
}, {
"id" : "21c54a86-7fe1-405a-a991-c2bd353ac497",
"name" : "prod",
"version" : "1.0.0",
"status" : "UP",
"tags" : [ "f5046314-b096-47d8-9ec5-d43c6bddeda1", "2eafc9e2-d870-4fde-beb7-98383cea2b3c", "81927e15-9691-4a94-a70f-dc9c814108db" ]
} ],
"runtime" : {
"resources" : {
"cpu" : null,
"gpu" : null,
"memoryMb" : 1024,
"diskMb" : null,
"networkMbps" : null
},
"images" : { }
}
}'
HTTPie
$ echo '{
"id" : null,
"created" : null,
"updated" : null,
"version" : "1.0.0",
"user" : "genie",
"name" : "hive",
"description" : "Hive command v1.0.0",
"metadata" : null,
"tags" : [ "tag:bar", "tag:foo" ],
"configs" : [ "s3:///path/to/config-foo", "s3:///path/to/config-bar" ],
"dependencies" : [ "/path/to/file/foo", "/path/to/file/bar" ],
"setupFile" : null,
"status" : "ACTIVE",
"executable" : "/apps/hive/bin/hive",
"executableAndArguments" : [ "/apps/hive/bin/hive" ],
"checkDelay" : 10000,
"memory" : 1024,
"clusterCriteria" : [ {
"id" : "b1c89fba-2343-43cc-9e85-93a5eb4d5df4",
"name" : null,
"version" : null,
"status" : null,
"tags" : [ "d6fe286e-3d9f-4b74-b0fb-b0b28cbb6b05", "577d167c-87b0-4b47-a4a8-fe0658585867" ]
}, {
"id" : "21c54a86-7fe1-405a-a991-c2bd353ac497",
"name" : "prod",
"version" : "1.0.0",
"status" : "UP",
"tags" : [ "f5046314-b096-47d8-9ec5-d43c6bddeda1", "2eafc9e2-d870-4fde-beb7-98383cea2b3c", "81927e15-9691-4a94-a70f-dc9c814108db" ]
} ],
"runtime" : {
"resources" : {
"cpu" : null,
"gpu" : null,
"memoryMb" : 1024,
"diskMb" : null,
"networkMbps" : null
},
"images" : { }
}
}' | http POST 'https://genie.example.com/api/v3/commands' \
'Content-Type:application/json'
Response Documentation
Headers
Name | Description |
---|---|
|
The URI |
Payload Fields
None
HATEOAS Links
None
HTTP Messages
Request
POST /api/v3/commands HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 1226
{
"id" : null,
"created" : null,
"updated" : null,
"version" : "1.0.0",
"user" : "genie",
"name" : "hive",
"description" : "Hive command v1.0.0",
"metadata" : null,
"tags" : [ "tag:bar", "tag:foo" ],
"configs" : [ "s3:///path/to/config-foo", "s3:///path/to/config-bar" ],
"dependencies" : [ "/path/to/file/foo", "/path/to/file/bar" ],
"setupFile" : null,
"status" : "ACTIVE",
"executable" : "/apps/hive/bin/hive",
"executableAndArguments" : [ "/apps/hive/bin/hive" ],
"checkDelay" : 10000,
"memory" : 1024,
"clusterCriteria" : [ {
"id" : "b1c89fba-2343-43cc-9e85-93a5eb4d5df4",
"name" : null,
"version" : null,
"status" : null,
"tags" : [ "d6fe286e-3d9f-4b74-b0fb-b0b28cbb6b05", "577d167c-87b0-4b47-a4a8-fe0658585867" ]
}, {
"id" : "21c54a86-7fe1-405a-a991-c2bd353ac497",
"name" : "prod",
"version" : "1.0.0",
"status" : "UP",
"tags" : [ "f5046314-b096-47d8-9ec5-d43c6bddeda1", "2eafc9e2-d870-4fde-beb7-98383cea2b3c", "81927e15-9691-4a94-a70f-dc9c814108db" ]
} ],
"runtime" : {
"resources" : {
"cpu" : null,
"gpu" : null,
"memoryMb" : 1024,
"diskMb" : null,
"networkMbps" : null
},
"images" : { }
}
}
Response
HTTP/1.1 201 Created
Location: https://genie.example.com/api/v3/commands/acebd12c-4d34-42e5-a0f6-3b5c67a4377f
Date: Fri, 16 Sep 2022 00:49:16 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.2. Get a Command
9.2.1. Description
Get the metadata about a command in the system.
9.2.2. Endpoint
GET /api/v3/commands/{id}
9.2.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/acebd12c-4d34-42e5-a0f6-3b5c67a4377f' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/commands/acebd12c-4d34-42e5-a0f6-3b5c67a4377f'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
configs |
Array |
Any configuration files needed for the resource |
true |
|
status |
String |
The status of the command. Options: [ACTIVE, DEPRECATED, INACTIVE] |
Must not be null |
false |
executable |
String |
The executable to run on the Genie node when this command is used. e.g. /usr/bin/hadoop |
Must not be empty. Size must be between 0 and 1024 inclusive |
false |
executableAndArguments |
Array |
The executable and arguments to run on the Genie node when this command is used. e.g. /usr/bin/hadoop |
Must not be empty |
false |
checkDelay |
Number |
Deprecated as of 4.3.0. Now is a no-op on the server side. |
false |
|
memory |
Number |
The default amount of memory (in MB) that should be allocated for instances of this command client |
Must be at least 1 |
true |
dependencies |
Array |
The dependencies for the command |
true |
|
clusterCriteria |
Array |
The priority ordered list of criteria to resolve clusters that this command can run jobs on |
true |
|
runtime |
Object |
The various job runtime parameters that should be used if this command is used |
false |
HATEOAS Links
Relation | Description |
---|---|
|
URI for this command |
|
Get all the applications this command depends on |
|
Get all clusters this command is available on |
HTTP Messages
Request
GET /api/v3/commands/acebd12c-4d34-42e5-a0f6-3b5c67a4377f HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:49:16 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 1814
{
"id" : "acebd12c-4d34-42e5-a0f6-3b5c67a4377f",
"created" : "2022-09-16T00:49:16.926Z",
"updated" : "2022-09-16T00:49:16.926Z",
"version" : "1.0.0",
"user" : "genie",
"name" : "hive",
"description" : "Hive command v1.0.0",
"metadata" : null,
"tags" : [ "tag:bar", "tag:foo", "genie.name:hive", "genie.id:acebd12c-4d34-42e5-a0f6-3b5c67a4377f" ],
"configs" : [ "s3:///path/to/config-foo", "s3:///path/to/config-bar" ],
"dependencies" : [ "/path/to/file/foo", "/path/to/file/bar" ],
"setupFile" : null,
"status" : "ACTIVE",
"executable" : "/apps/hive/bin/hive",
"executableAndArguments" : [ "/apps/hive/bin/hive" ],
"checkDelay" : 10000,
"memory" : 1024,
"clusterCriteria" : [ {
"id" : "b1c89fba-2343-43cc-9e85-93a5eb4d5df4",
"name" : null,
"version" : null,
"status" : null,
"tags" : [ "d6fe286e-3d9f-4b74-b0fb-b0b28cbb6b05", "577d167c-87b0-4b47-a4a8-fe0658585867" ]
}, {
"id" : "21c54a86-7fe1-405a-a991-c2bd353ac497",
"name" : "prod",
"version" : "1.0.0",
"status" : "UP",
"tags" : [ "f5046314-b096-47d8-9ec5-d43c6bddeda1", "2eafc9e2-d870-4fde-beb7-98383cea2b3c", "81927e15-9691-4a94-a70f-dc9c814108db" ]
} ],
"runtime" : {
"resources" : {
"cpu" : null,
"gpu" : null,
"memoryMb" : 1024,
"diskMb" : null,
"networkMbps" : null
},
"images" : { }
},
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/commands/acebd12c-4d34-42e5-a0f6-3b5c67a4377f"
},
"applications" : {
"href" : "https://genie.example.com/api/v3/commands/acebd12c-4d34-42e5-a0f6-3b5c67a4377f/applications"
},
"clusters" : {
"href" : "https://genie.example.com/api/v3/commands/acebd12c-4d34-42e5-a0f6-3b5c67a4377f/clusters{?status}",
"templated" : true
}
}
}
9.3. Find Commands
9.3.1. Description
Find commands using various query parameters.
9.3.2. Endpoint
GET /api/v3/commands
9.3.3. API Docs
Request Documentation
Headers
None
Path Parameters
None
Query Parameters
Parameter | Description |
---|---|
|
The page number to get. Default to 0. |
|
The size of the page to get. Default to 64. |
|
The fields to sort the results by. Defaults to 'updated,desc'. |
|
The name of the commands to find. Use % to perform a regex like query |
|
The user of the commands to find. Use % to perform a regex like query |
|
The status(es) of the commands to find. Can have multiple. Options: [ACTIVE, DEPRECATED, INACTIVE] |
|
The tag(s) of the commands to find. Can have multiple. |
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands?status=ACTIVE&status=INACTIVE&status=%5BACTIVE%2C+INACTIVE%5D' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/commands?status=ACTIVE&status=INACTIVE&status=%5BACTIVE%2C+INACTIVE%5D'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
_links |
Object |
Links to other resources. |
false |
|
page |
Object |
The result page information. |
false |
|
page.size |
Number |
The number of elements in this page result. |
false |
|
page.totalElements |
Number |
The total number of elements this search result could return. |
false |
|
page.totalPages |
Number |
The total number of pages there could be at the current page size. |
false |
|
page.number |
Number |
The current page number. |
false |
|
_embedded.commandList |
Array |
The found commands. |
false |
HATEOAS Links
Relation | Description |
---|---|
|
The current search |
|
The first page for this search |
|
The previous page for this search |
|
The next page for this search |
|
The last page for this search |
HTTP Messages
Request
GET /api/v3/commands?status=ACTIVE&status=INACTIVE&status=%5BACTIVE%2C+INACTIVE%5D HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:49:12 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 3311
{
"_embedded" : {
"commandList" : [ {
"id" : "aff74d2a-e190-4f33-9627-2763ee962634",
"created" : "2022-09-16T00:49:12.643Z",
"updated" : "2022-09-16T00:49:12.643Z",
"version" : "02c96234-ef4e-45dc-b220-56565ce53865",
"user" : "8af3030a-d356-428e-9767-a3fdf1eaaaa4",
"name" : "7d987c4f-3619-4147-b689-edad871f3689",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:7d987c4f-3619-4147-b689-edad871f3689", "genie.id:aff74d2a-e190-4f33-9627-2763ee962634" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "INACTIVE",
"executable" : "/apps/hive/bin/hive",
"executableAndArguments" : [ "/apps/hive/bin/hive" ],
"checkDelay" : 10000,
"memory" : null,
"clusterCriteria" : [ ],
"runtime" : {
"resources" : {
"cpu" : null,
"gpu" : null,
"memoryMb" : null,
"diskMb" : null,
"networkMbps" : null
},
"images" : { }
},
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/commands/aff74d2a-e190-4f33-9627-2763ee962634"
},
"applications" : {
"href" : "https://genie.example.com/api/v3/commands/aff74d2a-e190-4f33-9627-2763ee962634/applications"
},
"clusters" : {
"href" : "https://genie.example.com/api/v3/commands/aff74d2a-e190-4f33-9627-2763ee962634/clusters{?status}",
"templated" : true
}
}
}, {
"id" : "d8363746-610f-4c34-983c-5741cf4935cf",
"created" : "2022-09-16T00:49:10.595Z",
"updated" : "2022-09-16T00:49:10.595Z",
"version" : "58040576-bccf-4bf8-91d9-158926df364d",
"user" : "71acfe50-68d9-4c2f-94a4-a8de3f3d2338",
"name" : "f8f5f541-aadf-41bd-b486-d8bd807cd1aa",
"description" : null,
"metadata" : null,
"tags" : [ "genie.id:d8363746-610f-4c34-983c-5741cf4935cf", "genie.name:f8f5f541-aadf-41bd-b486-d8bd807cd1aa" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "ACTIVE",
"executable" : "/apps/hive/bin/hive",
"executableAndArguments" : [ "/apps/hive/bin/hive" ],
"checkDelay" : 10000,
"memory" : null,
"clusterCriteria" : [ ],
"runtime" : {
"resources" : {
"cpu" : null,
"gpu" : null,
"memoryMb" : null,
"diskMb" : null,
"networkMbps" : null
},
"images" : { }
},
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/commands/d8363746-610f-4c34-983c-5741cf4935cf"
},
"applications" : {
"href" : "https://genie.example.com/api/v3/commands/d8363746-610f-4c34-983c-5741cf4935cf/applications"
},
"clusters" : {
"href" : "https://genie.example.com/api/v3/commands/d8363746-610f-4c34-983c-5741cf4935cf/clusters{?status}",
"templated" : true
}
}
} ]
},
"_links" : {
"self" : {
"href" : "https://genie.example.com/api/v3/commands?status=ACTIVE&status=INACTIVE{&name,user,tag}",
"templated" : true
}
},
"page" : {
"size" : 64,
"totalElements" : 2,
"totalPages" : 1,
"number" : 0
}
}
9.4. Update an Entire Command
9.4.1. Description
Update the metadata about a command. This method does a complete replace of the resource. Usual flow is to call to get the most recent state then update what you want and call this API with the result.
For more fine grained control call the PATCH API. |
9.4.2. Endpoint
PUT /api/v3/commands/{id}
9.4.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
tags |
Array |
The tags |
true |
|
setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
configs |
Array |
Any configuration files needed for the resource |
true |
|
status |
String |
The status of the command. Options: [ACTIVE, DEPRECATED, INACTIVE] |
Must not be null |
false |
executable |
String |
The executable to run on the Genie node when this command is used. e.g. /usr/bin/hadoop |
Must not be empty. Size must be between 0 and 1024 inclusive |
false |
executableAndArguments |
Array |
The executable and arguments to run on the Genie node when this command is used. e.g. /usr/bin/hadoop |
Must not be empty |
false |
checkDelay |
Number |
Deprecated as of 4.3.0. Now is a no-op on the server side. |
false |
|
memory |
Number |
The default amount of memory (in MB) that should be allocated for instances of this command client |
Must be at least 1 |
true |
dependencies |
Array |
The dependencies for the command |
true |
|
clusterCriteria |
Array |
The priority ordered list of criteria to resolve clusters that this command can run jobs on |
true |
|
runtime |
Object |
The various job runtime parameters that should be used if this command is used |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca' -i -X PUT \
-H 'Content-Type: application/json' \
-d '{
"id" : "1c962204-3e8c-4682-abe7-e04dcbcc2aca",
"created" : "2022-09-16T00:49:18.860Z",
"updated" : "2022-09-16T00:49:18.860Z",
"version" : "1.0.0",
"user" : "genie",
"name" : "hive",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:hive", "genie.id:1c962204-3e8c-4682-abe7-e04dcbcc2aca" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "INACTIVE",
"executable" : "/apps/hive/bin/hive",
"executableAndArguments" : [ "/apps/hive/bin/hive" ],
"checkDelay" : 10000,
"memory" : null,
"clusterCriteria" : [ ],
"runtime" : {
"resources" : {
"cpu" : null,
"gpu" : null,
"memoryMb" : null,
"diskMb" : null,
"networkMbps" : null
},
"images" : { }
}
}'
HTTPie
$ echo '{
"id" : "1c962204-3e8c-4682-abe7-e04dcbcc2aca",
"created" : "2022-09-16T00:49:18.860Z",
"updated" : "2022-09-16T00:49:18.860Z",
"version" : "1.0.0",
"user" : "genie",
"name" : "hive",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:hive", "genie.id:1c962204-3e8c-4682-abe7-e04dcbcc2aca" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "INACTIVE",
"executable" : "/apps/hive/bin/hive",
"executableAndArguments" : [ "/apps/hive/bin/hive" ],
"checkDelay" : 10000,
"memory" : null,
"clusterCriteria" : [ ],
"runtime" : {
"resources" : {
"cpu" : null,
"gpu" : null,
"memoryMb" : null,
"diskMb" : null,
"networkMbps" : null
},
"images" : { }
}
}' | http PUT 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 763
{
"id" : "1c962204-3e8c-4682-abe7-e04dcbcc2aca",
"created" : "2022-09-16T00:49:18.860Z",
"updated" : "2022-09-16T00:49:18.860Z",
"version" : "1.0.0",
"user" : "genie",
"name" : "hive",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:hive", "genie.id:1c962204-3e8c-4682-abe7-e04dcbcc2aca" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "INACTIVE",
"executable" : "/apps/hive/bin/hive",
"executableAndArguments" : [ "/apps/hive/bin/hive" ],
"checkDelay" : 10000,
"memory" : null,
"clusterCriteria" : [ ],
"runtime" : {
"resources" : {
"cpu" : null,
"gpu" : null,
"memoryMb" : null,
"diskMb" : null,
"networkMbps" : null
},
"images" : { }
}
}
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:18 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.5. Update Parts of a Command
9.5.1. Description
Update the metadata about a command using JSON Patch. This will ONLY update the fields you request be changed.
For more information about JSON Patch RFC see the website. |
9.5.2. Endpoint
PATCH /api/v3/commands/{id}
9.5.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of patches to apply |
false |
|
[].op |
String |
Patch operation to perform. |
add, remove, replace, copy, move, test |
false |
[].path |
String |
The json path to operate on. e.g. /user |
false |
|
[].from |
String |
The json path to move or copy from. e.g. /user |
true |
|
[].value |
String |
The json value to put at the path for an add, replace or test |
true |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca' -i -X PATCH \
-H 'Content-Type: application/json' \
-d '[ {
"op" : "replace",
"path" : "/name",
"value" : "9b05d6c1-7be6-4151-a551-7356e689ae01"
} ]'
HTTPie
$ echo '[ {
"op" : "replace",
"path" : "/name",
"value" : "9b05d6c1-7be6-4151-a551-7356e689ae01"
} ]' | http PATCH 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca' \
'Content-Type:application/json'
HTTP Messages
Request
PATCH /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 98
[ {
"op" : "replace",
"path" : "/name",
"value" : "9b05d6c1-7be6-4151-a551-7356e689ae01"
} ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:19 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.6. Delete All Commands
9.6.1. Description
Delete all the commands currently stored in the system.
You won’t be able to delete any command that has been used by any job that is still in the system to maintain the ability for users to look up information about their job (where it ran, what it ran, etc) |
9.6.2. Endpoint
DELETE /api/v3/commands
9.6.3. API Docs
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/commands'
HTTP Messages
Request
DELETE /api/v3/commands HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:13 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.7. Delete a Command
9.7.1. Description
Delete a command currently configured in the system.
You won’t be able to delete a command that has been used by any job that is still in the system to maintain the ability for users to look up information about their job (where it ran, what it ran, etc) |
9.7.2. Endpoint
DELETE /api/v3/commands/{id}
9.7.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/3f258c0e-28f3-404d-8a1b-2eed78d2cf43' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/commands/3f258c0e-28f3-404d-8a1b-2eed78d2cf43'
HTTP Messages
Request
DELETE /api/v3/commands/3f258c0e-28f3-404d-8a1b-2eed78d2cf43 HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:09 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.8. Get Configs for Command
9.8.1. Description
Get the configuration file locations for a command.
9.8.2. Endpoint
GET /api/v3/commands/{id}/configs
9.8.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/configs' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/configs'
Response Documentation
Headers
Name | Description |
---|---|
|
application/json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of configuration file locations |
false |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/configs HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:49:14 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 82
[ "7cb248bd-0f03-4e51-994f-c7cfb6c07fa3", "5d608e40-19fb-4cb1-a086-68fcb964e62c" ]
9.9. Add Configs to Command
9.9.1. Description
Add configuration file locations to an existing command.
Configurations are stored as a set so any duplicates will be ignored. |
9.9.2. Endpoint
POST /api/v3/commands/{id}/configs
9.9.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of configuration file locations |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/configs' -i -X POST \
-H 'Content-Type: application/json' \
-d '[ "7cb248bd-0f03-4e51-994f-c7cfb6c07fa3", "5d608e40-19fb-4cb1-a086-68fcb964e62c" ]'
HTTPie
$ echo '[ "7cb248bd-0f03-4e51-994f-c7cfb6c07fa3", "5d608e40-19fb-4cb1-a086-68fcb964e62c" ]' | http POST 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/configs' \
'Content-Type:application/json'
HTTP Messages
Request
POST /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/configs HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 82
[ "7cb248bd-0f03-4e51-994f-c7cfb6c07fa3", "5d608e40-19fb-4cb1-a086-68fcb964e62c" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:14 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.10. Update Configs for a Command
9.10.1. Description
Update the configuration file locations for an existing command. Stored as a set so duplicates are ignored.
9.10.2. Endpoint
PUT /api/v3/commands/{id}/configs
9.10.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of configuration file locations |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/configs' -i -X PUT \
-H 'Content-Type: application/json' \
-d '[ "2ecb90f9-dd85-4e79-a09f-ae4b467560d8" ]'
HTTPie
$ echo '[ "2ecb90f9-dd85-4e79-a09f-ae4b467560d8" ]' | http PUT 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/configs' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/configs HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 42
[ "2ecb90f9-dd85-4e79-a09f-ae4b467560d8" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:17 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.11. Remove All Configs From a Command
9.11.1. Description
Remove all the configuration file locations for an existing command.
9.11.2. Endpoint
DELETE /api/v3/commands/{id}/configs
9.11.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/configs' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/configs'
HTTP Messages
Request
DELETE /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/configs HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:09 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.12. Get Dependencies For an Command
9.12.1. Description
Get the dependency file locations for an command.
9.12.2. Endpoint
GET /api/v3/commands/{id}/dependencies
9.12.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/dependencies' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/dependencies'
Response Documentation
Headers
Name | Description |
---|---|
|
application/json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of dependency file locations |
false |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/dependencies HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:49:14 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 82
[ "4e130e69-c020-4aac-9cce-8e194e166931", "b67137c1-094e-4671-84b1-3d2794b16847" ]
9.13. Add Dependencies to Command
9.13.1. Description
Add dependency file locations to an existing command. Stored as a set so all duplicates are ignored.
9.13.2. Endpoint
POST /api/v3/commands/{id}/dependencies
9.13.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of dependency file locations |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/dependencies' -i -X POST \
-H 'Content-Type: application/json' \
-d '[ "b67137c1-094e-4671-84b1-3d2794b16847", "4e130e69-c020-4aac-9cce-8e194e166931" ]'
HTTPie
$ echo '[ "b67137c1-094e-4671-84b1-3d2794b16847", "4e130e69-c020-4aac-9cce-8e194e166931" ]' | http POST 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/dependencies' \
'Content-Type:application/json'
HTTP Messages
Request
POST /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/dependencies HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 82
[ "b67137c1-094e-4671-84b1-3d2794b16847", "4e130e69-c020-4aac-9cce-8e194e166931" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:14 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.14. Update Dependencies for an Command
9.14.1. Description
Update the dependency file locations for an existing command
9.14.2. Endpoint
PUT /api/v3/commands/{id}/dependencies
9.14.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of dependency file locations |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/dependencies' -i -X PUT \
-H 'Content-Type: application/json' \
-d '[ "c756b9ae-7338-454b-b339-d7a1167e4467" ]'
HTTPie
$ echo '[ "c756b9ae-7338-454b-b339-d7a1167e4467" ]' | http PUT 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/dependencies' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/dependencies HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 42
[ "c756b9ae-7338-454b-b339-d7a1167e4467" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:16 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.15. Remove All Dependencies From an Command
9.15.1. Description
Remove all the dependency file locations for an existing command.
9.15.2. Endpoint
DELETE /api/v3/commands/{id}/dependencies
9.15.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/dependencies' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/dependencies'
HTTP Messages
Request
DELETE /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/dependencies HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:13 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.16. Get Tags For a Command
9.16.1. Description
Get the tags for a command.
9.16.2. Endpoint
GET /api/v3/commands/{id}/tags
9.16.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/tags' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/tags'
Response Documentation
Headers
Name | Description |
---|---|
|
application/json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of tags |
false |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/tags HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:49:18 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 150
[ "genie.name:hive", "eb68dd48-ee15-4adf-b4a7-e1a302431874", "d9b8aa8a-50bc-407b-94eb-4b1965922791", "genie.id:1c962204-3e8c-4682-abe7-e04dcbcc2aca" ]
9.17. Add Tags to Command
9.17.1. Description
Add tags to an existing command. Stored as a set so all duplicates are ignored.
genie.id:{id} and genie.name:{name} tags are automatically added by the service.
|
9.17.2. Endpoint
POST /api/v3/commands/{id}/tags
9.17.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of tags |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/tags' -i -X POST \
-H 'Content-Type: application/json' \
-d '[ "d9b8aa8a-50bc-407b-94eb-4b1965922791", "eb68dd48-ee15-4adf-b4a7-e1a302431874" ]'
HTTPie
$ echo '[ "d9b8aa8a-50bc-407b-94eb-4b1965922791", "eb68dd48-ee15-4adf-b4a7-e1a302431874" ]' | http POST 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/tags' \
'Content-Type:application/json'
HTTP Messages
Request
POST /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/tags HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 82
[ "d9b8aa8a-50bc-407b-94eb-4b1965922791", "eb68dd48-ee15-4adf-b4a7-e1a302431874" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:18 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.18. Update Tags for a Command
9.18.1. Description
Update the tags for an existing command.
The genie.id:{id} and genie.name:{name} tags can’t be removed. They will automatically be added back
by the system.
|
9.18.2. Endpoint
PUT /api/v3/commands/{id}/tags
9.18.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of tags |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/tags' -i -X PUT \
-H 'Content-Type: application/json' \
-d '[ "969c072c-7a37-400b-ab75-bf6552b77b66" ]'
HTTPie
$ echo '[ "969c072c-7a37-400b-ab75-bf6552b77b66" ]' | http PUT 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/tags' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/tags HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 42
[ "969c072c-7a37-400b-ab75-bf6552b77b66" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:18 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.19. Remove All Tags From Command
9.19.1. Description
Remove all the tags for an existing command
The genie.id:{id} and genie.name:{name} tags will NOT be removed by this operation
|
9.19.2. Endpoint
DELETE /api/v3/commands/{id}/tags
9.19.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/tags' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/tags'
HTTP Messages
Request
DELETE /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/tags HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:09 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.20. Remove Tag From Command
9.20.1. Description
Remove a tag from an existing command.
You can’t remove the genie.id:{id} and genie.name:{name} tags. They will just be added back by the system
|
9.20.2. Endpoint
DELETE /api/v3/commands/{id}/tags/{tag}
9.20.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
|
The tag to remove |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/tags/aa4783a9-538f-4995-afd2-7a58c80cfdab' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/tags/aa4783a9-538f-4995-afd2-7a58c80cfdab'
HTTP Messages
Request
DELETE /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/tags/aa4783a9-538f-4995-afd2-7a58c80cfdab HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:18 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.21. Add Applications to a Command
9.21.1. Description
Add new applications (as array of their ID’s) to the existing set of applications the command depends on
The applications for the ID’s must already exist in the system |
9.21.2. Endpoint
POST /api/v3/commands/{id}/applications
9.21.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of application ids to add to existing set of applications |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/applications' -i -X POST \
-H 'Content-Type: application/json' \
-d '[ "0dfbaa51-01ce-4ec5-9208-2de13889899c", "9dab8976-7cae-4952-82a7-c7228f983bed" ]'
HTTPie
$ echo '[ "0dfbaa51-01ce-4ec5-9208-2de13889899c", "9dab8976-7cae-4952-82a7-c7228f983bed" ]' | http POST 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/applications' \
'Content-Type:application/json'
HTTP Messages
Request
POST /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/applications HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 82
[ "0dfbaa51-01ce-4ec5-9208-2de13889899c", "9dab8976-7cae-4952-82a7-c7228f983bed" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:13 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.22. Get the Applications for a Command
9.22.1. Description
Get the applications the command currently depends on. These are the applications that will be installed at runtime when a job is run with the given command
9.22.2. Endpoint
GET /api/v3/commands/{id}/applications
9.22.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/applications' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/applications'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
The set of applications this command depends on |
false |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/applications HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:49:13 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 2540
[ {
"id" : "0dfbaa51-01ce-4ec5-9208-2de13889899c",
"created" : "2022-09-16T00:49:13.825Z",
"updated" : "2022-09-16T00:49:13.825Z",
"version" : "5f84e1b9-ecc6-4613-b248-4670592dbc0b",
"user" : "5f84e1b9-ecc6-4613-b248-4670592dbc0b",
"name" : "5f84e1b9-ecc6-4613-b248-4670592dbc0b",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:5f84e1b9-ecc6-4613-b248-4670592dbc0b", "genie.id:0dfbaa51-01ce-4ec5-9208-2de13889899c" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "ACTIVE",
"type" : null,
"links" : [ {
"rel" : "self",
"href" : "https://genie.example.com/api/v3/applications/0dfbaa51-01ce-4ec5-9208-2de13889899c"
}, {
"rel" : "commands",
"href" : "https://genie.example.com/api/v3/applications/0dfbaa51-01ce-4ec5-9208-2de13889899c/commands{?status}"
} ]
}, {
"id" : "9dab8976-7cae-4952-82a7-c7228f983bed",
"created" : "2022-09-16T00:49:13.848Z",
"updated" : "2022-09-16T00:49:13.848Z",
"version" : "5f84e1b9-ecc6-4613-b248-4670592dbc0b",
"user" : "5f84e1b9-ecc6-4613-b248-4670592dbc0b",
"name" : "5f84e1b9-ecc6-4613-b248-4670592dbc0b",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:5f84e1b9-ecc6-4613-b248-4670592dbc0b", "genie.id:9dab8976-7cae-4952-82a7-c7228f983bed" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "ACTIVE",
"type" : null,
"links" : [ {
"rel" : "self",
"href" : "https://genie.example.com/api/v3/applications/9dab8976-7cae-4952-82a7-c7228f983bed"
}, {
"rel" : "commands",
"href" : "https://genie.example.com/api/v3/applications/9dab8976-7cae-4952-82a7-c7228f983bed/commands{?status}"
} ]
}, {
"id" : "0a587e4e-1a47-4e2d-91b2-96b62d25b986",
"created" : "2022-09-16T00:49:14.062Z",
"updated" : "2022-09-16T00:49:14.062Z",
"version" : "5f84e1b9-ecc6-4613-b248-4670592dbc0b",
"user" : "5f84e1b9-ecc6-4613-b248-4670592dbc0b",
"name" : "5f84e1b9-ecc6-4613-b248-4670592dbc0b",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:5f84e1b9-ecc6-4613-b248-4670592dbc0b", "genie.id:0a587e4e-1a47-4e2d-91b2-96b62d25b986" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "ACTIVE",
"type" : null,
"links" : [ {
"rel" : "self",
"href" : "https://genie.example.com/api/v3/applications/0a587e4e-1a47-4e2d-91b2-96b62d25b986"
}, {
"rel" : "commands",
"href" : "https://genie.example.com/api/v3/applications/0a587e4e-1a47-4e2d-91b2-96b62d25b986/commands{?status}"
} ]
} ]
9.23. Set Applications for a Command
9.23.1. Description
Set the applications (as array of their ID’s) that are dependencies of the command.
The applications with the ID’s must already exist in the system |
9.23.2. Endpoint
PUT /api/v3/commands/{id}/applications
9.23.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
Array of application ids to replace the existing set of applications with |
false |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/applications' -i -X PUT \
-H 'Content-Type: application/json' \
-d '[ "106325df-0208-4e19-918f-a1a567cdd738", "e79678dd-90bf-450a-b0c6-0684eecd29c8" ]'
HTTPie
$ echo '[ "106325df-0208-4e19-918f-a1a567cdd738", "e79678dd-90bf-450a-b0c6-0684eecd29c8" ]' | http PUT 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/applications' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/applications HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 82
[ "106325df-0208-4e19-918f-a1a567cdd738", "e79678dd-90bf-450a-b0c6-0684eecd29c8" ]
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:17 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.24. Remove All Applications From a Command
9.24.1. Description
Remove all the applications currently set as dependencies of the command
This does NOT delete the application(s) from the system just unlinks them |
9.24.2. Endpoint
DELETE /api/v3/commands/{id}/applications
9.24.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/applications' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/applications'
HTTP Messages
Request
DELETE /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/applications HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:18 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.25. Remove A Single Application From a Command
9.25.1. Description
Remove the identified application as a dependency of the command.
This does NOT delete the application from the system just un-links it |
9.25.2. Endpoint
DELETE /api/v3/commands/{id}/applications/{applicationId}
9.25.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
|
The id of the application to remove |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/applications/05aae6e5-ea72-4c60-a076-ae19d587326f' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/applications/05aae6e5-ea72-4c60-a076-ae19d587326f'
HTTP Messages
Request
DELETE /api/v3/commands/1c962204-3e8c-4682-abe7-e04dcbcc2aca/applications/05aae6e5-ea72-4c60-a076-ae19d587326f HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 204 No Content
Date: Fri, 16 Sep 2022 00:49:19 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.26. Get the Clusters that Have Command Available
9.26.1. Description
Search the clusters that the given command is linked to.
9.26.2. Endpoint
GET /api/v3/commands/{id}/clusters
9.26.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
Parameter | Description |
---|---|
|
The status of clusters to search for |
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/1b44126d-6f7f-44a8-85aa-4a6624c8161c/clusters?status=UP' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/commands/1b44126d-6f7f-44a8-85aa-4a6624c8161c/clusters?status=UP'
Response Documentation
Headers
Name | Description |
---|---|
|
application/hal+json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
The list of clusters found |
false |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/commands/1b44126d-6f7f-44a8-85aa-4a6624c8161c/clusters?status=UP HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:49:16 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 819
[ {
"id" : "fb2a4c15-7caa-43e7-8f26-c0219ecddb3f",
"created" : "2022-09-16T00:49:16.198Z",
"updated" : "2022-09-16T00:49:16.198Z",
"version" : "9ae8b50b-3e43-4e40-adbd-8b0684d7591c",
"user" : "9ae8b50b-3e43-4e40-adbd-8b0684d7591c",
"name" : "9ae8b50b-3e43-4e40-adbd-8b0684d7591c",
"description" : null,
"metadata" : null,
"tags" : [ "genie.id:fb2a4c15-7caa-43e7-8f26-c0219ecddb3f", "genie.name:9ae8b50b-3e43-4e40-adbd-8b0684d7591c" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "UP",
"links" : [ {
"rel" : "self",
"href" : "https://genie.example.com/api/v3/clusters/fb2a4c15-7caa-43e7-8f26-c0219ecddb3f"
}, {
"rel" : "commands",
"href" : "https://genie.example.com/api/v3/clusters/fb2a4c15-7caa-43e7-8f26-c0219ecddb3f/commands{?status}"
} ]
} ]
9.27. Get the Cluster Criteria for a Command
9.27.1. Description
Get the priority ordered list of criteria associated with this command that say what attributes a cluster needs to have in order for this command to work on that cluster.
9.27.2. Endpoint
GET /api/v3/commands/{id}/clusterCriteria
9.27.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/80409993-0427-4d03-8d6a-de22ebb549f7/clusterCriteria' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/commands/80409993-0427-4d03-8d6a-de22ebb549f7/clusterCriteria'
Response Documentation
Headers
Name | Description |
---|---|
|
application/json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
A priority ordered list of criteria |
true |
|
[].id |
String |
The unique identifier a resource needs to have to match this criterion |
true |
|
[].name |
String |
The name a resource needs to have to match this criterion |
true |
|
[].version |
String |
The version a resource needs to have to match this criterion |
true |
|
[].status |
String |
The status a resource needs to have to match this criterion |
true |
|
[].tags |
Array |
The set of tags a resource needs to have to match this criterion |
true |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/commands/80409993-0427-4d03-8d6a-de22ebb549f7/clusterCriteria HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:49:17 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 455
[ {
"id" : "b1c89fba-2343-43cc-9e85-93a5eb4d5df4",
"name" : null,
"version" : null,
"status" : null,
"tags" : [ "d6fe286e-3d9f-4b74-b0fb-b0b28cbb6b05", "577d167c-87b0-4b47-a4a8-fe0658585867" ]
}, {
"id" : "21c54a86-7fe1-405a-a991-c2bd353ac497",
"name" : "prod",
"version" : "1.0.0",
"status" : "UP",
"tags" : [ "f5046314-b096-47d8-9ec5-d43c6bddeda1", "2eafc9e2-d870-4fde-beb7-98383cea2b3c", "81927e15-9691-4a94-a70f-dc9c814108db" ]
} ]
9.28. Remove all the Cluster Criteria From a Command
9.28.1. Description
Remove all the existing cluster criteria from a given command.
9.28.2. Endpoint
DELETE /api/v3/commands/{id}/clusterCriteria
9.28.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/9fe1af1e-0923-4efa-a0b4-92a756670efb/clusterCriteria' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/commands/9fe1af1e-0923-4efa-a0b4-92a756670efb/clusterCriteria'
HTTP Messages
Request
DELETE /api/v3/commands/9fe1af1e-0923-4efa-a0b4-92a756670efb/clusterCriteria HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Date: Fri, 16 Sep 2022 00:49:09 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.29. Add a New Cluster Criterion For Command
9.29.1. Description
Add a new cluster criterion to the existing list of cluster criterion for the given command. The new criterion will have the lowest priority of all the criterion.
9.29.2. Endpoint
POST /api/v3/commands/{id}/clusterCriteria
9.29.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The unique identifier a resource needs to have to match this criterion |
true |
|
name |
String |
The name a resource needs to have to match this criterion |
true |
|
version |
String |
The version a resource needs to have to match this criterion |
true |
|
status |
String |
The status a resource needs to have to match this criterion |
true |
|
tags |
Array |
The set of tags a resource needs to have to match this criterion |
true |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/23e317e0-79e7-488c-b5a5-e7b8cf82c6d2/clusterCriteria' -i -X POST \
-H 'Content-Type: application/json' \
-d '{
"id" : "e792c78c-af96-4ae3-b3ef-e898361aa1ae",
"name" : "adhocCluster",
"version" : "3.0.0",
"status" : "UP",
"tags" : [ "sched:adhoc", "type:yarn" ]
}'
HTTPie
$ echo '{
"id" : "e792c78c-af96-4ae3-b3ef-e898361aa1ae",
"name" : "adhocCluster",
"version" : "3.0.0",
"status" : "UP",
"tags" : [ "sched:adhoc", "type:yarn" ]
}' | http POST 'https://genie.example.com/api/v3/commands/23e317e0-79e7-488c-b5a5-e7b8cf82c6d2/clusterCriteria' \
'Content-Type:application/json'
HTTP Messages
Request
POST /api/v3/commands/23e317e0-79e7-488c-b5a5-e7b8cf82c6d2/clusterCriteria HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 163
{
"id" : "e792c78c-af96-4ae3-b3ef-e898361aa1ae",
"name" : "adhocCluster",
"version" : "3.0.0",
"status" : "UP",
"tags" : [ "sched:adhoc", "type:yarn" ]
}
Response
HTTP/1.1 200 OK
Date: Fri, 16 Sep 2022 00:49:18 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.30. Set Cluster Criteria For Command
9.30.1. Description
Replace the existing cluster criteria for a command with a new list. The criterion are added to the command in the same order they are passed to the service. This is the priority order they will be evaluated in.
9.30.2. Endpoint
PUT /api/v3/commands/{id}/clusterCriteria
9.30.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
A priority ordered list of criteria |
true |
|
[].id |
String |
The unique identifier a resource needs to have to match this criterion |
true |
|
[].name |
String |
The name a resource needs to have to match this criterion |
true |
|
[].version |
String |
The version a resource needs to have to match this criterion |
true |
|
[].status |
String |
The status a resource needs to have to match this criterion |
true |
|
[].tags |
Array |
The set of tags a resource needs to have to match this criterion |
true |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/15a69fc2-319d-475d-8316-8e0d0226b2a1/clusterCriteria' -i -X PUT \
-H 'Content-Type: application/json' \
-d '[ {
"id" : "62d6cada-6dca-4c4b-b2f3-27ec8cbb1742",
"name" : null,
"version" : null,
"status" : null,
"tags" : [ ]
}, {
"id" : null,
"name" : null,
"version" : "1c866217-f26e-4e2a-9006-c79258ecb7b1",
"status" : null,
"tags" : [ ]
}, {
"id" : null,
"name" : "f3ad8360-7c0e-4b17-8d21-528c4223f62d",
"version" : null,
"status" : null,
"tags" : [ ]
} ]'
HTTPie
$ echo '[ {
"id" : "62d6cada-6dca-4c4b-b2f3-27ec8cbb1742",
"name" : null,
"version" : null,
"status" : null,
"tags" : [ ]
}, {
"id" : null,
"name" : null,
"version" : "1c866217-f26e-4e2a-9006-c79258ecb7b1",
"status" : null,
"tags" : [ ]
}, {
"id" : null,
"name" : "f3ad8360-7c0e-4b17-8d21-528c4223f62d",
"version" : null,
"status" : null,
"tags" : [ ]
} ]' | http PUT 'https://genie.example.com/api/v3/commands/15a69fc2-319d-475d-8316-8e0d0226b2a1/clusterCriteria' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/commands/15a69fc2-319d-475d-8316-8e0d0226b2a1/clusterCriteria HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 377
[ {
"id" : "62d6cada-6dca-4c4b-b2f3-27ec8cbb1742",
"name" : null,
"version" : null,
"status" : null,
"tags" : [ ]
}, {
"id" : null,
"name" : null,
"version" : "1c866217-f26e-4e2a-9006-c79258ecb7b1",
"status" : null,
"tags" : [ ]
}, {
"id" : null,
"name" : "f3ad8360-7c0e-4b17-8d21-528c4223f62d",
"version" : null,
"status" : null,
"tags" : [ ]
} ]
Response
HTTP/1.1 200 OK
Date: Fri, 16 Sep 2022 00:49:13 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.31. Insert a New Cluster Criterion For Command
9.31.1. Description
Add a new Criterion to the existing list of cluster criteria for the command identified by id
.
The priority
is the place in the list this new criterion should be placed.
A value of 0
indicates it should be placed at the front of the list with the highest possible priority.
1
would be second in the list etc.
If priority
is >
the current size of the cluster criteria list this new criterion will be placed at the end as the lowest priority item.
Priority must be >= 0
.
9.31.2. Endpoint
PUT /api/v3/commands/{id}/clusterCriteria/{priority}
9.31.3. API Docs
Request Documentation
Headers
Name | Description |
---|---|
|
application/json |
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
|
Priority of the criterion to insert |
Query Parameters
None
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
id |
String |
The unique identifier a resource needs to have to match this criterion |
true |
|
name |
String |
The name a resource needs to have to match this criterion |
true |
|
version |
String |
The version a resource needs to have to match this criterion |
true |
|
status |
String |
The status a resource needs to have to match this criterion |
true |
|
tags |
Array |
The set of tags a resource needs to have to match this criterion |
true |
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/7c5a432e-3102-49e4-80f4-0fa95317d267/clusterCriteria/1' -i -X PUT \
-H 'Content-Type: application/json' \
-d '{
"id" : "dcdecb96-120b-4c61-96f1-68d3723fd160",
"name" : "insightCluster",
"version" : "4.0.0",
"status" : "OUT_OF_SERVICE",
"tags" : [ "type:presto", "sched:insights" ]
}'
HTTPie
$ echo '{
"id" : "dcdecb96-120b-4c61-96f1-68d3723fd160",
"name" : "insightCluster",
"version" : "4.0.0",
"status" : "OUT_OF_SERVICE",
"tags" : [ "type:presto", "sched:insights" ]
}' | http PUT 'https://genie.example.com/api/v3/commands/7c5a432e-3102-49e4-80f4-0fa95317d267/clusterCriteria/1' \
'Content-Type:application/json'
HTTP Messages
Request
PUT /api/v3/commands/7c5a432e-3102-49e4-80f4-0fa95317d267/clusterCriteria/1 HTTP/1.1
Content-Type: application/json
Host: genie.example.com
Content-Length: 182
{
"id" : "dcdecb96-120b-4c61-96f1-68d3723fd160",
"name" : "insightCluster",
"version" : "4.0.0",
"status" : "OUT_OF_SERVICE",
"tags" : [ "type:presto", "sched:insights" ]
}
Response
HTTP/1.1 200 OK
Date: Fri, 16 Sep 2022 00:49:14 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.32. Remove the Cluster Criterion From a Command
9.32.1. Description
Remove the Criterion
with the given priority
from the current list of cluster criteria associated with the command identified by id
.
A value of 0
for priority
will result in the first element in the list being removed, 1
the second element and so on.
0 ⇐ priority < current criteria length
|
9.32.2. Endpoint
DELETE /api/v3/commands/{id}/clusterCriteria/{priority}
9.32.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
|
Priority of the criterion to insert |
Query Parameters
None
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/f45420f5-e3cb-486a-8208-90001f4c922d/clusterCriteria/1' -i -X DELETE
HTTPie
$ http DELETE 'https://genie.example.com/api/v3/commands/f45420f5-e3cb-486a-8208-90001f4c922d/clusterCriteria/1'
HTTP Messages
Request
DELETE /api/v3/commands/f45420f5-e3cb-486a-8208-90001f4c922d/clusterCriteria/1 HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Date: Fri, 16 Sep 2022 00:49:14 GMT
Keep-Alive: timeout=60
Connection: keep-alive
9.33. Resolve Clusters for Command Cluster Criteria
9.33.1. Description
For a given Command
resolve the Clusters
which each of the Commands
clusterCriteria
would resolve
if they were evaluated against the current contents of the database.
9.33.2. Endpoint
GET /api/v3/commands/{id}/resolvedClusters
9.33.3. API Docs
Request Documentation
Headers
None
Path Parameters
Parameter | Description |
---|---|
|
The resource id |
Query Parameters
Parameter | Description |
---|---|
|
Whether the system should add the default cluster status to the criteria. Default: true |
Payload Fields
None
Request Examples
cURL
$ curl 'https://genie.example.com/api/v3/commands/af4d82e6-3105-4ba2-b5da-c2ffdca27171/resolvedClusters' -i -X GET
HTTPie
$ http GET 'https://genie.example.com/api/v3/commands/af4d82e6-3105-4ba2-b5da-c2ffdca27171/resolvedClusters'
Response Documentation
Headers
Name | Description |
---|---|
|
application/json |
Payload Fields
Path | Type | Description | Constraints | Optional |
---|---|---|---|---|
[] |
Array |
The list of criterion and associated resolved clusters |
true |
|
[].criterion |
Object |
The criterion that was evaluated to yield the resources |
false |
|
[].resources |
Array |
The resources that were resolved by evaluating the criterion |
false |
|
[].criterion.id |
String |
The unique identifier a resource needs to have to match this criterion |
true |
|
[].criterion.name |
String |
The name a resource needs to have to match this criterion |
true |
|
[].criterion.version |
String |
The version a resource needs to have to match this criterion |
true |
|
[].criterion.status |
String |
The status a resource needs to have to match this criterion |
true |
|
[].criterion.tags |
Array |
The set of tags a resource needs to have to match this criterion |
true |
|
[].resources[].id |
String |
The id. If not set the system will set one. |
Size must be between 0 and 255 inclusive |
true |
[].resources[].created |
String |
The UTC time of creation. Set by system. ISO8601 format including milliseconds. |
true |
|
[].resources[].updated |
String |
The UTC time of last update. Set by system. ISO8601 format including milliseconds. |
true |
|
[].resources[].name |
String |
The name |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
[].resources[].user |
String |
The user |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
[].resources[].version |
String |
The version |
Must not be empty. Size must be between 0 and 255 inclusive |
false |
[].resources[].description |
String |
Any description |
Size must be between 0 and 1000 inclusive |
true |
[].resources[].metadata |
Object |
Any semi-structured metadata. Must be valid JSON |
true |
|
[].resources[].tags |
Array |
The tags |
true |
|
[].resources[].setupFile |
String |
A location for any setup that needs to be done when installing |
Size must be between 0 and 1024 inclusive |
true |
[].resources[].configs |
Array |
Any configuration files needed for the resource |
true |
|
[].resources[].status |
String |
The status of the cluster. Options: [UP, OUT_OF_SERVICE, TERMINATED] |
Must not be null |
false |
[].resources[].dependencies |
Array |
The dependencies for the cluster |
true |
HATEOAS Links
None
HTTP Messages
Request
GET /api/v3/commands/af4d82e6-3105-4ba2-b5da-c2ffdca27171/resolvedClusters HTTP/1.1
Host: genie.example.com
Response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 16 Sep 2022 00:49:17 GMT
Keep-Alive: timeout=60
Connection: keep-alive
Content-Length: 4132
[ {
"criterion" : {
"id" : "950adf30-8124-4712-9840-b991310d7408",
"name" : null,
"version" : null,
"status" : null,
"tags" : [ ]
},
"resources" : [ {
"id" : "950adf30-8124-4712-9840-b991310d7408",
"created" : "2022-09-16T00:49:18.554Z",
"updated" : "2022-09-16T00:49:18.554Z",
"version" : "919a1517-cb57-4d70-a7fa-d33a9e79c981",
"user" : "eacf2d8e-660d-4192-a0ed-bdf524d7c1ac",
"name" : "125fc0ab-29db-48e4-9e4d-d889da93e2e9",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:125fc0ab-29db-48e4-9e4d-d889da93e2e9", "06482cb6-0585-492d-a8ee-4db9c0cb5228", "genie.id:950adf30-8124-4712-9840-b991310d7408", "76f0484d-a8ca-4a3d-979f-355828913598" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "UP"
} ]
}, {
"criterion" : {
"id" : null,
"name" : "125fc0ab-29db-48e4-9e4d-d889da93e2e9",
"version" : null,
"status" : null,
"tags" : [ ]
},
"resources" : [ {
"id" : "bb167a80-b454-4ece-9592-37c76700bf5d",
"created" : "2022-09-16T00:49:18.571Z",
"updated" : "2022-09-16T00:49:18.571Z",
"version" : "919a1517-cb57-4d70-a7fa-d33a9e79c981",
"user" : "eacf2d8e-660d-4192-a0ed-bdf524d7c1ac",
"name" : "125fc0ab-29db-48e4-9e4d-d889da93e2e9",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:125fc0ab-29db-48e4-9e4d-d889da93e2e9", "06482cb6-0585-492d-a8ee-4db9c0cb5228", "76f0484d-a8ca-4a3d-979f-355828913598", "genie.id:bb167a80-b454-4ece-9592-37c76700bf5d" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "UP"
}, {
"id" : "950adf30-8124-4712-9840-b991310d7408",
"created" : "2022-09-16T00:49:18.554Z",
"updated" : "2022-09-16T00:49:18.554Z",
"version" : "919a1517-cb57-4d70-a7fa-d33a9e79c981",
"user" : "eacf2d8e-660d-4192-a0ed-bdf524d7c1ac",
"name" : "125fc0ab-29db-48e4-9e4d-d889da93e2e9",
"description" : null,
"metadata" : null,
"tags" : [ "genie.name:125fc0ab-29db-48e4-9e4d-d889da93e2e9", "06482cb6-0585-492d-a8ee-4db9c0cb5228", "genie.id:950adf30-8124-4712-9840-b991310d7408", "76f0484d-a8ca-4a3d-979f-355828913598" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "UP"
} ]
}, {
"criterion" : {
"id" : null,
"name" : null,
"version" : "5d68b6c7-bb44-43d5-afbc-7398051c9da9",
"status" : null,
"tags" : [ ]
},
"resources" : [ {
"id" : "f8817836-f7cb-4966-9f28-5c4fdcbc82ca",
"created" : "2022-09-16T00:49:18.598Z",
"updated" : "2022-09-16T00:49:18.598Z",
"version" : "5d68b6c7-bb44-43d5-afbc-7398051c9da9",
"user" : "944e5199-ff56-4be8-bc4d-dc25d048a4f0",
"name" : "29bd6f9e-407e-4fdf-a778-a63418ca9373",
"description" : null,
"metadata" : null,
"tags" : [ "0b1e5f4c-03c0-4913-aeb4-92f1c10363cd", "b159a285-62a3-4c97-ab7f-2f5f8fb38b8f", "genie.name:29bd6f9e-407e-4fdf-a778-a63418ca9373", "genie.id:f8817836-f7cb-4966-9f28-5c4fdcbc82ca" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "UP"
} ]
}, {
"criterion" : {
"id" : null,
"name" : null,
"version" : null,
"status" : "TERMINATED",
"tags" : [ ]
},
"resources" : [ ]
}, {
"criterion" : {
"id" : null,
"name" : null,
"version" : null,
"status" : null,
"tags" : [ "0b1e5f4c-03c0-4913-aeb4-92f1c10363cd", "b159a285-62a3-4c97-ab7f-2f5f8fb38b8f" ]
},
"resources" : [ {
"id" : "f8817836-f7cb-4966-9f28-5c4fdcbc82ca",
"created" : "2022-09-16T00:49:18.598Z",
"updated" : "2022-09-16T00:49:18.598Z",
"version" : "5d68b6c7-bb44-43d5-afbc-7398051c9da9",
"user" : "944e5199-ff56-4be8-bc4d-dc25d048a4f0",
"name" : "29bd6f9e-407e-4fdf-a778-a63418ca9373",
"description" : null,
"metadata" : null,
"tags" : [ "0b1e5f4c-03c0-4913-aeb4-92f1c10363cd", "b159a285-62a3-4c97-ab7f-2f5f8fb38b8f", "genie.name:29bd6f9e-407e-4fdf-a778-a63418ca9373", "genie.id:f8817836-f7cb-4966-9f28-5c4fdcbc82ca" ],
"configs" : [ ],
"dependencies" : [ ],
"setupFile" : null,
"status" : "UP"
} ]
} ]