Management API Guide

Axual B.V. Version 6.0.1

Overview

HTTP verbs

Management API tries to adhere as closely as possible to standard HTTP and REST conventions in its use of HTTP verbs.

Verb Usage

GET

Used to retrieve a resource

POST

Used to create a new resource

PATCH

Used to update an existing resource, including partial updates

DELETE

Used to delete an existing resource

HTTP status codes

Management API tries to adhere as closely as possible to standard HTTP and REST conventions in its use of HTTP status codes.

Status code Usage

200 OK

The request completed successfully

201 Created

A new resource has been created successfully. The resource’s URI is available from the response’s Location header

204 No Content

An update to an existing resource has been applied successfully

400 Bad Request

The request was malformed. The response body will include an error providing further information

404 Not Found

The requested resource did not exist

Errors

Whenever an error response (status code >= 400) is returned, the body will contain a JSON object that describes the problem. The error object has the following structure:

Unresolved directive in index.adoc - include::../../target/generated-snippets/error/response-fields.adoc[]

For example, a request that attempts to apply a non-existent Cluster to an Instance will produce a 400 Bad Request response:

Unresolved directive in index.adoc - include::../../target/generated-snippets/error/http-response.adoc[]

Application Information

Management API is a Spring Boot application. In order to access general information regarding name, version, etc. please use the bellow request to do so:

GET /info HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token

The response will have the following format:

HTTP/1.1 200 OK
Content-Length: 74
Content-Type: application/json;charset=UTF-8

{
  "name" : "axual-flux",
  "description" : null,
  "version" : "6.0.1"
}

Hypermedia

Management API uses hypermedia and resources include links to other resources in their responses. Responses are in Hypertext Application from resource to resource. Language (HAL) format. Links can be found beneath the _links key. Users of the API should not create URIs themselves, instead they should use the above-described links to navigate

Conditional requests

To be added…​

Paging

All collection resources return results with pagination. Pagination is also supported for search endpoints.

To access the first page of the results, call the endpoint with ?page=0 or nothing at all. This will return by default a maximum of 20 results per page. To change this value, specify size=10 to return 10 results per page.

The response includes various helper links to easily navigate between pages via prev and next link and jump to first and last page.

A JSON object page at the end of the response summarizes the current page, total number of elements and other relevant details.

See below example for more details.

Request parameters

Parameter Description

page

The page to retrieve

size

Number of entries per page, default value is 20

HTTP request

GET /tenants?page=0&size=5 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1657

{
  "_embedded" : {
    "tenants" : [ {
      "properties" : {
        "replication.factor" : "1",
        "cleanup.policy" : "delete",
        "min.insync.replicas" : "1",
        "segment.ms" : "86400000"
      },
      "name" : "Rabobank",
      "shortName" : "rabo",
      "logo" : "rabo.png",
      "issuerUrl" : "http://api.example.com/auth/realms/rabobank",
      "dataClassificationEnabled" : false,
      "featureConfig" : null,
      "retentionTime" : 604800000,
      "partitions" : 12,
      "uid" : "55ef719629a94a07b9bf8ac0f3c495e5",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "contact" : {
          "href" : "...",
          "templated" : true,
          "title" : "Business contact of this tenant"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    }
  },
  "page" : {
    "size" : 5,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}
Relation Description

first

The first page of results

last

The last page of results

next

The next page of results

prev

The previous page of results

Response fields

Path Type Description

_embedded

Object

List of results

_links

Object

Links to other resources and pages

page

Object

Summary of current page results

page.size

Number

Number of results in current page

page.totalElements

Number

Total number of results available

page.totalPages

Number

Total pages available

page.number

Number

Current page number (starting with zero)

Sorting

The keyword sort can be used on collection resources and search endpoints to sort on given field name. Using the keyword asc or desc, the direction of sorting can be changed.

Multiple fields can be used for sorting by using the request parameter ?sort=PROPERTY1&sort=PROPERTY2 and so on.

Request parameters

Parameter Description

sort

The field to sort on. Multiple fields can be specified by adding &sort=PROPERTY. To change the direction append a , to the property name plus either asc or desc

HTTP request

GET /tenants?sort=shortName&size=5 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1631

{
  "_embedded" : {
    "tenants" : [ {
      "properties" : {
        "replication.factor" : "1",
        "cleanup.policy" : "delete",
        "min.insync.replicas" : "1",
        "segment.ms" : "86400000"
      },
      "name" : "Rabobank",
      "shortName" : "rabo",
      "logo" : "rabo.png",
      "issuerUrl" : "http://api.example.com/auth/realms/rabobank",
      "dataClassificationEnabled" : false,
      "featureConfig" : null,
      "retentionTime" : 604800000,
      "partitions" : 12,
      "uid" : "55ef719629a94a07b9bf8ac0f3c495e5",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "contact" : {
          "href" : "...",
          "templated" : true,
          "title" : "Business contact of this tenant"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    }
  },
  "page" : {
    "size" : 5,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}

Security

Authentication

Axual is using Bearer Authentication. Every request must be authenticated.

Get the Bearer token:

curl --request POST \
 --url https://<your-installation-host>/auth/realms/<your-realm>/protocol/openid-connect/token \
 --header 'Content-Type: application/x-www-form-urlencoded' \
 --data client_id=self-service \
 --data username=<username> \
 --data password=<password> \
 --data realm=<your-realm> \
 --data grant_type=password

After any Bearer token request, the response will contain a access_token which can be used as Bearer token in subsequent calls.

In the previous example request the API expects a POST body with username, password and realm fields.

Pass the Bearer token in the Authorization header:

curl -H 'Accept: application/json' -H "Authorization: {Bearer token}" https://{hostname}/api/myresource

Example GET request:

Curl request

$ curl 'http://api.example.com/applications' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

Example POST request:

Curl request

$ curl 'http://api.example.com/applications' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "applicationId" : "com.axual.turbulence.connector.application1",
  "name" : "Test Connector Application",
  "shortName" : "test_cnnt_app",
  "description" : "This is a connector test application",
  "applicationType" : "CONNECTOR",
  "type" : "sink",
  "applicationClass" : "io.axual.distributor.logger.MessageLogger",
  "applicationClassVersion" : "1.0.0",
  "visibility" : "PRIVATE",
  "owners" : "http://api.example.com/groups/514d4oit834841869644c2ad8b439997"
}'

Logout

To invalidate the token, send a GET request to /logout and include the token that needs to be invalidated in the X-Auth-Token header.

curl -X GET \
  http://api.axual.io/logout \
  -H 'X-Auth-Token: 16d961e3-93bc-4486-8d05-a0281f3a4938'

In response, the header X-Auth-Token will be returned with no value. This confirms the token was invalidated.

Get the authenticated user

GET /user

Returns all available information about the currently authenticated user.

GET /user HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 752

{
  "firstName" : "powerUser",
  "lastName" : "powerUser",
  "middleName" : null,
  "emailAddress" : {
    "email" : "poweruser@rabobank.nl"
  },
  "phoneNumber" : null,
  "roles" : [ {
    "name" : "STREAM_ADMIN"
  }, {
    "name" : "TENANT_ADMIN"
  }, {
    "name" : "APPLICATION_ADMIN"
  }, {
    "name" : "ENVIRONMENT_ADMIN"
  } ],
  "uid" : "cedccd5c6d9e424ab1a9d9f767fc7cfd",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "user" : {
      "href" : "...",
      "templated" : true,
      "title" : "A user"
    }
  }
}

Get my groups

Returns all groups that currently authenticated user belongs to.

GET /group HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 812
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "groups" : [ {
      "name" : "Application-raboApplication1",
      "emailAddress" : null,
      "phoneNumber" : null,
      "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "group" : {
          "href" : "...",
          "templated" : true,
          "title" : "A group"
        },
        "members" : {
          "href" : "...",
          "templated" : true,
          "title" : "Users belonging to this group"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}

Get the authenticated tenant

GET /tenant

Returns the tenant of the logged-in user.

GET /tenants HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json
HTTP/1.1 200 OK
Content-Length: 1538
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "tenants" : [ {
      "properties" : {
        "replication.factor" : "1",
        "cleanup.policy" : "delete",
        "min.insync.replicas" : "1",
        "segment.ms" : "86400000"
      },
      "name" : "Rabobank",
      "shortName" : "rabo",
      "logo" : "rabo.png",
      "issuerUrl" : "http://api.example.com/auth/realms/rabobank",
      "dataClassificationEnabled" : false,
      "featureConfig" : null,
      "retentionTime" : 604800000,
      "partitions" : 12,
      "uid" : "55ef719629a94a07b9bf8ac0f3c495e5",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        },
        "contact" : {
          "href" : "...",
          "templated" : true,
          "title" : "Business contact of this tenant"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}

Elevate to a tenant

PUT /tenant

This feature is no longer supported!

De-elevate from a tenant

DELETE /tenant

This feature is no longer supported!

Resources

Index

The index provides the entry point into the service.

Accessing the index

A GET request is used to access the index

Response fields

Path Type Description

_links

Object

Links to other resources

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 2451

{
  "_links" : {
    "applications" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access or create applications"
    },
    "application_principals" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access or create ApplicationPrincipals"
    },
    "tenants" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access or create tenants"
    },
    "groups" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access or create groups"
    },
    "streams" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access or create streams"
    },
    "instances" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access or create instances"
    },
    "support_tiers" : {
      "href" : "...",
      "templated" : true
    },
    "application_access" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access or create ApplicationAccess"
    },
    "application_access_grants" : {
      "href" : "...",
      "templated" : true
    },
    "schema_versions" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access or create schema versions"
    },
    "users" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access or create users"
    },
    "environments" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access or create environments"
    },
    "schemas" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access or create schemas"
    },
    "confidentialities" : {
      "href" : "...",
      "templated" : true
    },
    "connect_plugins" : {
      "href" : "...",
      "templated" : true
    },
    "stream_configs" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access or create streams"
    },
    "application_deployments" : {
      "href" : "...",
      "templated" : true
    },
    "integrities" : {
      "href" : "...",
      "templated" : true
    },
    "clusters" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access or create clusters"
    },
    "group" : {
      "href" : "...",
      "title" : "A group"
    },
    "user" : {
      "href" : "...",
      "title" : "A user"
    },
    "tenant" : {
      "href" : "...",
      "title" : "A tenant"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    }
  }
}
Relation Description

users

The Users resource

groups

The Groups resource

instances

The Instances resource

clusters

The Clusters resource

environments

The Environments resource

tenants

The Tenants resource

streams

The Streams resource

stream_configs

The StreamConfigs resource

schemas

The Schemas resource

schema_versions

The SchemaVersions resource

applications

The Applications resource

application_principals

The ApplicationPrincipals resource

application_access

The ApplicationAccess resource

application_access_grants

The ApplicationAccessGrant resource

user

Returns the authenticated user

group

Returns the groups that authenticated user belongs to

tenant

Returns the authenticated tenant

profile

The ALPS profile for the service

confidentialities

Returns the confidentiality levels

integrities

Returns the integrity

support_tiers

Returns the support tiers

application_deployments

The ApplicationDeployment resource

connect_plugins

The ConnectPluginsInfo resource

Users

A User is a person logging into Flux. Every user is identified by a unique email address that also identifies the Tenant they belong to. A user can never see users of other tenant.

The /users resource is used to create and list users.

Users Schema

The /users resource uses the following json-schema:

GET /profile/users HTTP/1.1
Accept: application/schema+json
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 1908
Content-Type: application/schema+json;charset=UTF-8

{
  "title" : "User",
  "properties" : {
    "firstName" : {
      "title" : "First name",
      "readOnly" : false,
      "type" : "string"
    },
    "lastName" : {
      "title" : "Last name",
      "readOnly" : false,
      "type" : "string"
    },
    "uid" : {
      "title" : "Uid",
      "readOnly" : true,
      "type" : "string"
    },
    "emailAddress" : {
      "title" : "Email address",
      "readOnly" : false,
      "type" : "object",
      "$ref" : "#/definitions/emailAddress"
    },
    "phoneNumber" : {
      "title" : "Phone number",
      "readOnly" : false,
      "type" : "string"
    },
    "roles" : {
      "title" : "Roles",
      "readOnly" : true,
      "type" : "array",
      "uniqueItems" : true,
      "items" : {
        "$ref" : "#/definitions/role"
      }
    },
    "modified_by" : {
      "title" : "Modified by",
      "readOnly" : false,
      "type" : "string"
    },
    "created_at" : {
      "title" : "Created at",
      "readOnly" : true,
      "type" : "string",
      "format" : "date-time"
    },
    "middleName" : {
      "title" : "Middle name",
      "readOnly" : false,
      "type" : "string"
    },
    "modified_at" : {
      "title" : "Modified at",
      "readOnly" : false,
      "type" : "string",
      "format" : "date-time"
    },
    "created_by" : {
      "title" : "Created by",
      "readOnly" : true,
      "type" : "string"
    }
  },
  "definitions" : {
    "emailAddress" : {
      "type" : "object",
      "properties" : {
        "email" : {
          "title" : "Email",
          "readOnly" : true,
          "type" : "string"
        }
      }
    },
    "role" : {
      "type" : "object",
      "properties" : {
        "name" : {
          "title" : "Name",
          "readOnly" : false,
          "type" : "string"
        }
      }
    }
  },
  "type" : "object",
  "$schema" : "http://json-schema.org/draft-04/schema#"
}

List all users

A GET request will list all users belonging to the same tenant as the logged in user.

Curl request

$ curl 'http://api.example.com/users' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /users HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 11904

{
  "_embedded" : {
    "users" : [ {
      "firstName" : "supAdmin",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "supadmin@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "eb1f7f147df84179a151bdc21f5bb924",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "billingInternal",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "billingInternal@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "fc287f147df84179a151bdc21f5cc835",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "tenAdmin",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "tenadmin@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "ea0e7f147df84179a151bdc21f5bb813",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "billingViewer",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "billingViewer@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "ea0e7f147d224133a151bdc69f5bb613",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "envAdmin",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "envadmin@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "7cb463240b8049578b298c214c28512a",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "envAuthor",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "envauthor@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "9e66c8d7cd5c4e509ec0fe840ef37c62",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "strAdmin",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "stradmin@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "a0018341100c431d8a8117be2ad12d8a",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "strAuthor",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "strauthor@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "3cab41ad252e48a49631d1346d227a17",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "appAdmin",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "appadmin@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "caa51002633244ffbe36f4ccf8a8f501",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "appAuthor",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "appauthor@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "e235c8fe4264431bbdb3b40a2e5f8f62",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "powerUser",
      "lastName" : "powerUser",
      "emailAddress" : {
        "email" : "poweruser@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "cedccd5c6d9e424ab1a9d9f767fc7cfd",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "po1",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "po1@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "51234a7a81994d1ca35ca7894cde08c9",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "po2",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "po2@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "1ecbda9a995f4ab2a4c95716087b21c7",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "firstNameTest",
      "lastName" : "lastNameTest",
      "emailAddress" : {
        "email" : "testuser@rabobank.nl"
      },
      "middleName" : "van der",
      "phoneNumber" : null,
      "uid" : "1759cc36cacd4df38ed1b0336e22e06d",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "regular",
      "lastName" : "user",
      "emailAddress" : {
        "email" : "regularuser@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "dc67596abe224691a363a230ca1e291e",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "kad",
      "lastName" : "member",
      "emailAddress" : {
        "email" : "kadmember@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "007b994a6ab34165a93fd4c7a8db1388",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "appOwner",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "appowner@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "51234a7a81994d1ca35ca7894cde08c6",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "streamOwner",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "streamowner@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "1ecbda9a995f4ab2a4c95716087b21c8",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "envOwner",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "envowner@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "1759cc36cacd4dc28ed1b0336e22e06d",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    },
    "create" : {
      "href" : "...",
      "templated" : true,
      "title" : "Indication that an entity can be created"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 19,
    "totalPages" : 1,
    "number" : 0
  }
}
Relation Description

create

Existence of this link indicates that the currently authenticated user can create a User

Retrieve a user

The /users/{id} item resource is used to retrieve, update individual users.

A GET request will retrieve the details of a User.

Curl request

$ curl 'http://api.example.com/users/dc67596abe224691a363a230ca1e291e' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /users/dc67596abe224691a363a230ca1e291e HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 991
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "firstName" : "regular",
  "lastName" : "user",
  "middleName" : null,
  "emailAddress" : {
    "email" : "regularuser@rabobank.nl"
  },
  "phoneNumber" : null,
  "roles" : [ ],
  "uid" : "dc67596abe224691a363a230ca1e291e",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "user" : {
      "href" : "...",
      "templated" : true,
      "title" : "A user"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "assign_roles" : {
      "href" : "...",
      "title" : "Indication that authenticated user can assign roles to this user"
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    },
    "tenant" : {
      "href" : "...",
      "title" : "A tenant"
    }
  }
}
Relation Description

edit

Existence of this link indicates that the currently authenticated user can edit the User

assign_roles

Existence of this link indicates that the currently authenticated user can assign roles to this user

delete

Existence of this link indicates that the currently authenticated user can delete this user

Create User

The endpoint /users is now deprecated. Please contact the Administration team regarding the topic of creating new Users.

A POST request is used to create a new User. This operation can be done by a Tenant Admin only.

Request fields

Path Type Description Constraints

firstName

String

The first name of the user

Must not be empty. Size must be between 2 and 50 inclusive

lastName

String

The last name of the user

Must not be empty. Size must be between 2 and 50 inclusive

middleName

String

The tussenvoegsel of the user

Size must be between 0 and 16 inclusive

emailAddress

String

The complete mail address of the user

password

String

The password of the user

Size must be between 0 and 72 inclusive

phoneNumber

String

The phoneNumber of the user

This is an optional field. Must be a valid phone number like +31612345678 or 0612345678.

Curl request

$ curl 'http://api.example.com/users' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "firstName" : "Jeroen",
  "lastName" : "Disseldorp",
  "middleName" : "van",
  "emailAddress" : "jeroen.van.disseldorp@rabobank.nl",
  "password" : "notsecret",
  "phoneNumber" : "0612345678"
}'

HTTP request

POST /users HTTP/1.1
Content-Length: 197
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "firstName" : "Jeroen",
  "lastName" : "Disseldorp",
  "middleName" : "van",
  "emailAddress" : "jeroen.van.disseldorp@rabobank.nl",
  "password" : "notsecret",
  "phoneNumber" : "0612345678"
}

HTTP response

HTTP/1.1 201 Created
ETag: "0"
Location: http://api.example.com/users/90ae2610eacc4ae4a092bd097276de16
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1057
Last-Modified: Thu, 22 Apr 2021 14:34:28 GMT

{
  "firstName" : "Jeroen",
  "lastName" : "Disseldorp",
  "middleName" : "van",
  "emailAddress" : {
    "email" : "jeroen.van.disseldorp@rabobank.nl"
  },
  "phoneNumber" : "0612345678",
  "roles" : [ ],
  "uid" : "90ae2610eacc4ae4a092bd097276de16",
  "created_at" : "2021-04-22T14:34:28.601088",
  "modified_at" : "2021-04-22T14:34:28.601088",
  "created_by" : "tenadmin@rabobank.nl",
  "modified_by" : "tenadmin@rabobank.nl",
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "user" : {
      "href" : "...",
      "templated" : true,
      "title" : "A user"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "assign_roles" : {
      "href" : "...",
      "title" : "Indication that authenticated user can assign roles to this user"
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    },
    "tenant" : {
      "href" : "...",
      "title" : "A tenant"
    }
  }
}

Update user

A PATCH request is used to update a User.

Update phoneNumber

$ curl 'http://api.example.com/users/dc67596abe224691a363a230ca1e291e' -i -X PATCH \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "phoneNumber" : "+31063433333"
}'
PATCH /users/dc67596abe224691a363a230ca1e291e HTTP/1.1
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Content-Length: 36
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "phoneNumber" : "+31063433333"
}
HTTP/1.1 204 No Content
ETag: "0"
Last-Modified: Thu, 7 Jun 2018 23:16:23 GMT

Delete user

A DELETE request is used to delete a User.

$ curl 'http://api.example.com/users/007b994a6ab34165a93fd4c7a8db1388' -i -X DELETE \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN'
DELETE /users/007b994a6ab34165a93fd4c7a8db1388 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN
HTTP/1.1 204 No Content

Users search endpoints

/users/search/findByFirstName

Returns all users with firstName containing the given firstName.

Parameter Description

firstName

A name or part of name

GET /users/search/findByFirstName?firstName=powerser HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 360
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "users" : [ ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "create" : {
      "href" : "...",
      "title" : "Indication that an entity can be created"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 0,
    "totalPages" : 0,
    "number" : 0
  }
}

/users/search/findByLastName

Returns all users with lastName containing the given lastName.

Parameter Description

lastName

A surname or part of surname

GET /users/search/findByLastName?lastName=ab HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 9256

{
  "_embedded" : {
    "users" : [ {
      "firstName" : "supAdmin",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "supadmin@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "eb1f7f147df84179a151bdc21f5bb924",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "billingInternal",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "billingInternal@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "fc287f147df84179a151bdc21f5cc835",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "tenAdmin",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "tenadmin@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "ea0e7f147df84179a151bdc21f5bb813",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "billingViewer",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "billingViewer@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "ea0e7f147d224133a151bdc69f5bb613",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "envAdmin",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "envadmin@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "7cb463240b8049578b298c214c28512a",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "envAuthor",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "envauthor@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "9e66c8d7cd5c4e509ec0fe840ef37c62",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "strAdmin",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "stradmin@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "a0018341100c431d8a8117be2ad12d8a",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "strAuthor",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "strauthor@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "3cab41ad252e48a49631d1346d227a17",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "appAdmin",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "appadmin@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "caa51002633244ffbe36f4ccf8a8f501",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "appAuthor",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "appauthor@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "e235c8fe4264431bbdb3b40a2e5f8f62",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "po1",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "po1@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "51234a7a81994d1ca35ca7894cde08c9",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "po2",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "po2@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "1ecbda9a995f4ab2a4c95716087b21c7",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "appOwner",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "appowner@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "51234a7a81994d1ca35ca7894cde08c6",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "streamOwner",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "streamowner@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "1ecbda9a995f4ab2a4c95716087b21c8",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "envOwner",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "envowner@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "1759cc36cacd4dc28ed1b0336e22e06d",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "create" : {
      "href" : "...",
      "title" : "Indication that an entity can be created"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 15,
    "totalPages" : 1,
    "number" : 0
  }
}

/users/search/searchUser

Returns all users with firstName, middleName, lastName, localPart or domain containing the given query.

Parameter Description

query

A firstName, middleName, lastName or localPart of email can be use as query.

GET /users/search/searchUser?query=powerser
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 747
Content-Type: application/hal+json;charset=UTF-8

{
    "_embedded" : {
    "users" : [ {
    "firstName" : "powerser",
    "lastName" : "Rabobank",
    "emailAddress" : {
    "email" : "appowner@rabobank.nl"
    },
    "middleName" : null,
    "phoneNumber" : null,
    "uid" : "51234a7a81994d1ca35ca7894cde08c6",
    "_links" : {
    "self" : {
    "href" : "...",
    "title" : "URI pointing to current request"
    },
    "user" : {
    "href" : "...",
    "templated" : true,
    "title" : "A user"
    },
    "tenant" : {
    "href" : "...",
    "title" : "A tenant"
    }
    }
    } ]
    },
    "_links" : {
    "self" : {
    "href" : "...",
    "title" : "URI pointing to current request"
    }
    }
}

/users/search/findByRole

Returns all users with given roles. Pass the name of the role as parameter.

Parameter Description

role

The name of role

GET /users/search/findByRole?role=TENANT_ADMIN HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1546

{
  "_embedded" : {
    "users" : [ {
      "firstName" : "tenAdmin",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "tenadmin@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "ea0e7f147df84179a151bdc21f5bb813",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "powerUser",
      "lastName" : "powerUser",
      "emailAddress" : {
        "email" : "poweruser@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "cedccd5c6d9e424ab1a9d9f767fc7cfd",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "create" : {
      "href" : "...",
      "title" : "Indication that an entity can be created"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 0
  }
}

/users/search/findByEmailAddress

Return user with emailAddress as the given emailAddress

Parameter Description

email

A valid email object

GET /users/search/findByEmailAddress?email=appowner%40rabobank.nl HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 747
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "users" : [ {
      "firstName" : "appOwner",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "appowner@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "51234a7a81994d1ca35ca7894cde08c6",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "user" : {
          "href" : "...",
          "templated" : true,
          "title" : "A user"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

Groups

A group in Flux represents a DevOps team within a tenant. Although different tenants may have different names for their teams, in Flux, they are represented by a group.

Group permissions

Every group can have zero or more users. Being a member of a group grants you certain permissions. The permission depends on the resource the group owns. If a group is owner of an application, every member of that group will have full rights on that application. This includes editing and even deleting the application.

Any group can be attached to an application, stream or environment. These resources have a owners field which represent the group that owns the resource. A resource can exist without any group owning it.

When listing a resource that has an existing 'owners' group, it will be show as embedded object of the resource. If the resource has no 'owners' group, it will be not shown as embedded object of the resource.

Group schema

The groups resource uses the following json-schema:

GET /profile/groups HTTP/1.1
Accept: application/schema+json
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 1428
Content-Type: application/schema+json;charset=UTF-8

{
  "title" : "Group",
  "properties" : {
    "uid" : {
      "title" : "Uid",
      "readOnly" : true,
      "type" : "string"
    },
    "emailAddress" : {
      "title" : "Email address",
      "readOnly" : false,
      "type" : "object",
      "$ref" : "#/definitions/emailAddress"
    },
    "phoneNumber" : {
      "title" : "Phone number",
      "readOnly" : false,
      "type" : "string"
    },
    "members" : {
      "title" : "Members",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "name" : {
      "title" : "Name",
      "readOnly" : false,
      "type" : "string"
    },
    "modified_by" : {
      "title" : "Modified by",
      "readOnly" : false,
      "type" : "string"
    },
    "created_at" : {
      "title" : "Created at",
      "readOnly" : true,
      "type" : "string",
      "format" : "date-time"
    },
    "modified_at" : {
      "title" : "Modified at",
      "readOnly" : false,
      "type" : "string",
      "format" : "date-time"
    },
    "created_by" : {
      "title" : "Created by",
      "readOnly" : true,
      "type" : "string"
    }
  },
  "definitions" : {
    "emailAddress" : {
      "type" : "object",
      "properties" : {
        "email" : {
          "title" : "Email",
          "readOnly" : true,
          "type" : "string"
        }
      }
    }
  },
  "type" : "object",
  "$schema" : "http://json-schema.org/draft-04/schema#"
}

List all groups

A GET request will list all the groups visible to the currently logged in user.

Curl request

$ curl 'http://api.example.com/groups' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /groups HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 5551

{
  "_embedded" : {
    "groups" : [ {
      "name" : "Application-raboApplication1",
      "emailAddress" : null,
      "phoneNumber" : null,
      "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "group" : {
          "href" : "...",
          "templated" : true,
          "title" : "A group"
        },
        "members" : {
          "href" : "...",
          "templated" : true,
          "title" : "Users belonging to this group"
        }
      }
    }, {
      "name" : "Stream-raboApplication1",
      "emailAddress" : null,
      "phoneNumber" : null,
      "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "group" : {
          "href" : "...",
          "templated" : true,
          "title" : "A group"
        },
        "members" : {
          "href" : "...",
          "templated" : true,
          "title" : "Users belonging to this group"
        }
      }
    }, {
      "name" : "Stream-raboApplication2",
      "emailAddress" : null,
      "phoneNumber" : null,
      "uid" : "88eb98e0eff34fde923c15687e6d75d5",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "group" : {
          "href" : "...",
          "templated" : true,
          "title" : "A group"
        },
        "members" : {
          "href" : "...",
          "templated" : true,
          "title" : "Users belonging to this group"
        }
      }
    }, {
      "name" : "Environment-raboenv1",
      "emailAddress" : null,
      "phoneNumber" : null,
      "uid" : "aac290536035440e9a85f193e4affeb3",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "group" : {
          "href" : "...",
          "templated" : true,
          "title" : "A group"
        },
        "members" : {
          "href" : "...",
          "templated" : true,
          "title" : "Users belonging to this group"
        }
      }
    }, {
      "name" : "Environment-raboprivenv2",
      "emailAddress" : null,
      "phoneNumber" : null,
      "uid" : "d40d27a07da04096a592aeef9a029cda",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "group" : {
          "href" : "...",
          "templated" : true,
          "title" : "A group"
        },
        "members" : {
          "href" : "...",
          "templated" : true,
          "title" : "Users belonging to this group"
        }
      }
    }, {
      "name" : "Team Kad",
      "emailAddress" : null,
      "phoneNumber" : null,
      "uid" : "514d4e9a834841869644c2ad8b439553",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "group" : {
          "href" : "...",
          "templated" : true,
          "title" : "A group"
        },
        "members" : {
          "href" : "...",
          "templated" : true,
          "title" : "Users belonging to this group"
        }
      }
    }, {
      "name" : "Team Null",
      "emailAddress" : null,
      "phoneNumber" : null,
      "uid" : "514d4e9a834841699644c2420b439553",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "group" : {
          "href" : "...",
          "templated" : true,
          "title" : "A group"
        },
        "members" : {
          "href" : "...",
          "templated" : true,
          "title" : "Users belonging to this group"
        }
      }
    }, {
      "name" : "Team Gone",
      "emailAddress" : null,
      "phoneNumber" : null,
      "uid" : "514d4oit834841869644c2ad8b439553",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "group" : {
          "href" : "...",
          "templated" : true,
          "title" : "A group"
        },
        "members" : {
          "href" : "...",
          "templated" : true,
          "title" : "Users belonging to this group"
        }
      }
    }, {
      "name" : "Team App Admins",
      "emailAddress" : null,
      "phoneNumber" : null,
      "uid" : "514d4oit834841869644c2ad8b439997",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "group" : {
          "href" : "...",
          "templated" : true,
          "title" : "A group"
        },
        "members" : {
          "href" : "...",
          "templated" : true,
          "title" : "Users belonging to this group"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    },
    "create" : {
      "href" : "...",
      "templated" : true,
      "title" : "Indication that an entity can be created"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 9,
    "totalPages" : 1,
    "number" : 0
  }
}
Relation Description

create

Existence of this link indicates that the currently authenticated user can create a Group

Create group

A POST request is used to create a new group. A group can only be created by a user having GROUP_ADMIN role.

Request fields

Path Type Description Constraints

name

String

The name of the group.

Must match the regular expression (?i)^[a-z0-9\.\-_ ]+$. Must not be empty. Size must be between 3 and 80 inclusive

members

Array

Users belonging to this group. This field would be absent if group has no members.

emailAddress

String

Email address of this group. Optional.

phoneNumber

String

Phone number to contact this group. Optional.

Must be a valid phone number like +31612345678 or 0612345678.

Curl request

$ curl 'http://api.example.com/groups' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "name" : "Team Fortress",
  "emailAddress" : "online.fortress@rabobank.nl",
  "phoneNumber" : "+31612345678",
  "members" : [ "http://api.example.com/users/9e66c8d7cd5c4e509ec0fe840ef37c62" ]
}'

HTTP request

POST /groups HTTP/1.1
Content-Length: 197
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "name" : "Team Fortress",
  "emailAddress" : "online.fortress@rabobank.nl",
  "phoneNumber" : "+31612345678",
  "members" : [ "http://api.example.com/users/9e66c8d7cd5c4e509ec0fe840ef37c62" ]
}

HTTP response

HTTP/1.1 201 Created
Content-Length: 1451
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Location: http://api.example.com/groups/27339538363849388ccb2d0c1ccc526a
Last-Modified: Thu, 22 Apr 2021 14:34:29 GMT

{
  "name" : "Team Fortress",
  "emailAddress" : {
    "email" : "online.fortress@rabobank.nl"
  },
  "phoneNumber" : "+31612345678",
  "uid" : "27339538363849388ccb2d0c1ccc526a",
  "created_at" : "2021-04-22T14:34:29.119181",
  "modified_at" : "2021-04-22T14:34:29.119181",
  "created_by" : "tenadmin@rabobank.nl",
  "modified_by" : "tenadmin@rabobank.nl",
  "_embedded" : {
    "members" : [ {
      "firstName" : "envAuthor",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "envauthor@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "9e66c8d7cd5c4e509ec0fe840ef37c62",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "group" : {
      "href" : "...",
      "templated" : true,
      "title" : "A group"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    },
    "members" : {
      "href" : "...",
      "templated" : true,
      "title" : "Users belonging to this group"
    }
  }
}
Relation Description

members

The members of this Group can be found at this link. This link is also used add/remove users from this group.

Retrieve a group

A GET request on /groups/{id} will fetch the details of the group.

HTTP request

GET /groups/c339c5cf9b5a4f6b8342c6ea2f9b6775 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token

HTTP response

HTTP/1.1 200 OK
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 2362

{
  "name" : "Application-raboApplication1",
  "emailAddress" : null,
  "phoneNumber" : null,
  "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : null,
  "created_by" : null,
  "modified_by" : null,
  "_embedded" : {
    "members" : [ {
      "firstName" : "envAuthor",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "envauthor@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "9e66c8d7cd5c4e509ec0fe840ef37c62",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "appOwner",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "appowner@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "51234a7a81994d1ca35ca7894cde08c6",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "envAdmin",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "envadmin@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "7cb463240b8049578b298c214c28512a",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "group" : {
      "href" : "...",
      "templated" : true,
      "title" : "A group"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    },
    "members" : {
      "href" : "...",
      "templated" : true,
      "title" : "Users belonging to this group"
    }
  }
}

Response fields

Path Type Description

name

String

The name of the group.

members

Array

Users belonging to this group. This field would be absent if group has no members.

Relation Description

members

The members of this Group can be found at this link. This link is also used add/remove users from this group.

edit

Existence of this link indicates that the currently authenticated user can edit the Group

delete

Existence of this link indicates that the currently authenticated user can delete the Group

Update a Group

A PATCH request is used to update a Group. Below is an example where name of the group is modified.

$ curl 'http://api.example.com/groups/c339c5cf9b5a4f6b8342c6ea2f9b6775' -i -X PATCH \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "name" : "Team Medallion"
}'
PATCH /groups/c339c5cf9b5a4f6b8342c6ea2f9b6775 HTTP/1.1
Content-Length: 31
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "name" : "Team Medallion"
}
HTTP/1.1 200 OK
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 2241

{
  "name" : "Team Medallion",
  "emailAddress" : null,
  "phoneNumber" : null,
  "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : null,
  "created_by" : null,
  "modified_by" : null,
  "_embedded" : {
    "members" : [ {
      "firstName" : "envAuthor",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "envauthor@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "9e66c8d7cd5c4e509ec0fe840ef37c62",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "appOwner",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "appowner@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "51234a7a81994d1ca35ca7894cde08c6",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    }, {
      "firstName" : "envAdmin",
      "lastName" : "Rabobank",
      "emailAddress" : {
        "email" : "envadmin@rabobank.nl"
      },
      "middleName" : null,
      "phoneNumber" : null,
      "uid" : "7cb463240b8049578b298c214c28512a",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "group" : {
      "href" : "...",
      "templated" : true,
      "title" : "A group"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "members" : {
      "href" : "...",
      "templated" : true,
      "title" : "Users belonging to this group"
    }
  }
}

Delete endpoints

Deleting group is a two-step process a GET request to check the constraints followed by the DELETE request

Delete group constraints

A GET request is used to get the constraints for deleting Group.

$ curl 'http://api.example.com/groups/c339c5cf9b5a4f6b8342c6ea2f9b6775/deletion-constraints' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
GET /groups/c339c5cf9b5a4f6b8342c6ea2f9b6775/deletion-constraints HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 101

{
  "canDelete" : false,
  "environmentsCount" : 0,
  "applicationsCount" : 9,
  "streamsCount" : 0
}

Delete group

A DELETE request is used to delete a Group.

$ curl 'http://api.example.com/groups/514d4oit834841869644c2ad8b439553' -i -X DELETE \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN'
DELETE /groups/514d4oit834841869644c2ad8b439553 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN
HTTP/1.1 204 No Content

Add user to group

To add an existing user to a group, a POST request to the members link must be placed with the URI of the user in request body as shown below. The Content-Type header should be set to text/uri-list. To add multiple users in 1 request, specify multiple URIs in separate lines.

$ curl 'http://api.example.com/groups/c339c5cf9b5a4f6b8342c6ea2f9b6775/members' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: text/uri-list' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d 'http://localhost/users/dc67596abe224691a363a230ca1e291e'
POST /groups/c339c5cf9b5a4f6b8342c6ea2f9b6775/members HTTP/1.1
Content-Length: 55
realm: rabo
Content-Type: text/uri-list
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

http://localhost/users/dc67596abe224691a363a230ca1e291e
HTTP/1.1 204 No Content

Replace existing users in group

It is possible to replace all existing users of a group with new user by placing a PUT request to the members link. The request body should have the URI(s) of the users that must be added. Content-Type header must be text/uri-list. This operation will remove all existing users and replace with the user provided in the body.

This operation can be used to remove a single user. First fetch the current members array, then delete the user that should be removed from the array and finally send the PUT request with new array in request body.

$ curl 'http://api.example.com/groups/c339c5cf9b5a4f6b8342c6ea2f9b6775/members' -i -X PUT \
    -H 'realm: rabo' \
    -H 'Content-Type: text/uri-list' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d 'http://localhost/users/dc67596abe224691a363a230ca1e291e'
PUT /groups/c339c5cf9b5a4f6b8342c6ea2f9b6775/members HTTP/1.1
Content-Length: 55
realm: rabo
Content-Type: text/uri-list
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

http://localhost/users/dc67596abe224691a363a230ca1e291e
HTTP/1.1 204 No Content

Remove user from group

To remove a single user from a group, send a DELETE request to /groups/gid/members/uid endpoint where gid is the UID of the group and uid is the UID of the user to be removed.

$ curl 'http://api.example.com/groups/c339c5cf9b5a4f6b8342c6ea2f9b6775/members/51234a7a81994d1ca35ca7894cde08c6' -i -X DELETE \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN'
DELETE /groups/c339c5cf9b5a4f6b8342c6ea2f9b6775/members/51234a7a81994d1ca35ca7894cde08c6 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN
HTTP/1.1 204 No Content

Group search endpoints

/groups/search/findByName

Search for a group by exact name.

Parameter Description

name

Stream name to search for.

$ curl 'http://api.example.com/groups/search/findByName?name=rabo-stream1' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 256

{
  "_embedded" : {
    "groups" : [ ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 0,
    "totalPages" : 0,
    "number" : 0
  }
}

/groups/search/findByNameContaining

Search for a group by name containing search term.

Parameter Description

name

Term to search within group name.

$ curl 'http://api.example.com/groups/search/findByNameContaining?name=group' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 256

{
  "_embedded" : {
    "groups" : [ ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 0,
    "totalPages" : 0,
    "number" : 0
  }
}

/groups/search/findByMembersContains

Search for a group by user having a valid URI of an existing User.

Parameter Description

user

A valid URI of a user

$ curl 'http://api.example.com/groups/search/findByMembersContains?user=http%3A%2F%2Flocalhost%2Fusers%2Fdc67596abe224691a363a230ca1e291e' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 256

{
  "_embedded" : {
    "groups" : [ ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 0,
    "totalPages" : 0,
    "number" : 0
  }
}

Instances

An Instance represents a single installation of Axual Event Bus (AEB). A AEB instance is usually marked for a particular functionality like Acceptance testing, Load/Stress testing etc.

The instances collection resource is used to create and list Instances.

Instance Schema

The instances resource uses the following json-schema:

GET /profile/instances HTTP/1.1
Accept: application/schema+json
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/schema+json;charset=UTF-8
Content-Length: 2757

{
  "title" : "Instance",
  "properties" : {
    "description" : {
      "title" : "Description",
      "readOnly" : false,
      "type" : "string"
    },
    "created_at" : {
      "title" : "Created at",
      "readOnly" : true,
      "type" : "string",
      "format" : "date-time"
    },
    "connectUrls" : {
      "title" : "Connect urls",
      "readOnly" : false,
      "type" : "string"
    },
    "created_by" : {
      "title" : "Created by",
      "readOnly" : true,
      "type" : "string"
    },
    "uid" : {
      "title" : "Uid",
      "readOnly" : true,
      "type" : "string"
    },
    "apiUrl" : {
      "title" : "Api url",
      "readOnly" : false,
      "type" : "string"
    },
    "instanceClusters" : {
      "title" : "Instance clusters",
      "readOnly" : false,
      "type" : "array",
      "uniqueItems" : true,
      "items" : {
        "$ref" : "#/definitions/instanceClusters"
      }
    },
    "supportTier" : {
      "title" : "Support tier",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "name" : {
      "title" : "Name",
      "readOnly" : false,
      "type" : "string"
    },
    "connectEnabled" : {
      "title" : "Connect enabled",
      "readOnly" : false,
      "type" : "boolean"
    },
    "modified_by" : {
      "title" : "Modified by",
      "readOnly" : false,
      "type" : "string"
    },
    "shortName" : {
      "title" : "Short name",
      "readOnly" : false,
      "type" : "string"
    },
    "modified_at" : {
      "title" : "Modified at",
      "readOnly" : false,
      "type" : "string",
      "format" : "date-time"
    },
    "properties" : {
      "title" : "Properties",
      "readOnly" : false,
      "type" : "object"
    },
    "caCerts" : {
      "title" : "Ca certs",
      "readOnly" : false,
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/cACert"
      }
    }
  },
  "definitions" : {
    "cACert" : {
      "type" : "object",
      "properties" : {
        "pem" : {
          "title" : "Pem",
          "readOnly" : false,
          "type" : "string"
        },
        "expiresOn" : {
          "title" : "Expires on",
          "readOnly" : false,
          "type" : "string",
          "format" : "date-time"
        }
      }
    },
    "instanceClusters" : {
      "type" : "object",
      "properties" : {
        "cluster" : {
          "title" : "Cluster",
          "readOnly" : false,
          "type" : "string",
          "format" : "uri"
        },
        "schemaRegistryUrls" : {
          "title" : "Schema registry urls",
          "readOnly" : false,
          "type" : "string"
        }
      }
    }
  },
  "type" : "object",
  "$schema" : "http://json-schema.org/draft-04/schema#"
}

List all instances

A GET request will list all of the Instances available.

Curl request

$ curl 'http://api.example.com/instances' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'

HTTP request

GET /instances HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 3780

{
  "_embedded" : {
    "instances" : [ {
      "name" : "Rabo OTA",
      "instanceClusters" : [ {
        "schemaRegistryUrls" : "https://schema.local3",
        "cluster" : {
          "name" : "Boxtel Cluster OTA",
          "description" : "",
          "location" : "Boxtel",
          "billingCloudEnabled" : true,
          "apiUrl" : "http://clusterapi-ota.boxtel.local",
          "clusterBrowseUrl" : "http://clusterbrowse-ota.boxtel.local",
          "bootstrapServers" : [ ],
          "uid" : "543c3b7d55634eba83b1472775c131c4"
        }
      }, {
        "schemaRegistryUrls" : "https://schema.local1,https://schema.local2",
        "cluster" : {
          "name" : "Best Cluster OTA",
          "description" : "",
          "location" : "Best",
          "billingCloudEnabled" : true,
          "apiUrl" : "http://clusterapi-ota.best.local",
          "clusterBrowseUrl" : "http://clusterbrowse-ota.best.local",
          "bootstrapServers" : [ {
            "bootstrapServer" : "bootstrapserver1:9093"
          } ],
          "uid" : "66c12e25ab06458eac988f0d700fbe81"
        }
      } ],
      "description" : "Rabo OTA Instance",
      "uid" : "b9301e9144324928911f7d83ec40c478",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "supportTier" : {
          "href" : "...",
          "templated" : true
        }
      }
    }, {
      "name" : "Rabo Prod",
      "instanceClusters" : [ {
        "schemaRegistryUrls" : "https://schema.local4",
        "cluster" : {
          "name" : "Best Cluster PROD",
          "description" : "",
          "location" : "Best",
          "billingCloudEnabled" : true,
          "apiUrl" : "http://clusterapi-prod.boxtel.local",
          "clusterBrowseUrl" : "http://clusterbrowse-prod.boxtel.local",
          "bootstrapServers" : [ ],
          "uid" : "db0766d053ca46d59b0a1af2817c535a"
        }
      } ],
      "description" : "Rabo Prod Instance",
      "uid" : "f6969bd9f3f7435aa6bc6c62cb960393",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "supportTier" : {
          "href" : "...",
          "templated" : true
        }
      }
    }, {
      "name" : "Rabo LST",
      "instanceClusters" : [ ],
      "description" : "Rabo LST Instance",
      "uid" : "g7969bd9f3f7435aa6bc6c62cb960304",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "supportTier" : {
          "href" : "...",
          "templated" : true
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    },
    "show" : {
      "href" : "...",
      "templated" : true,
      "title" : "Indication that an entity can be shown in menu"
    },
    "create" : {
      "href" : "...",
      "templated" : true,
      "title" : "Indication that an entity can be created"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 3,
    "totalPages" : 1,
    "number" : 0
  }
}
Relation Description

show

Existence of show link indicates that currently authenticated user should be shown the Instances menu option.

create

Existence of create link indicates that currently authenticated user can create new Instance.

Create instance

A POST request is used to create an instance. The request should have at-least one existing Cluster URI.

Request fields

Path Type Description Constraints

name

String

The name of the instance.

Must match the regular expression (?i)^[a-z0-9\.\-_ ]+$. Must not be empty. Size must be between 3 and 50 inclusive

description

String

A short text summarizing the purpose of the instance.

Size must be between 0 and 200 inclusive

apiUrl

String

URL of Instance API. This will be used to manage the Instance from Axual API.

Must be a well-formed URL. Must not be empty. Size must be between 0 and 255 inclusive

instanceClusters

Array

An array of cluster objects for the instance. Each cluster object contains cluster’s URI and the metadata for the instance associated to the cluster such as comma separated Schema registry urls.

Must not be empty. Must not be null

connectEnabled

Boolean

A toggle to enable/disable connect on this instance. When connect is enabled, a valid connectUrl need to provide in order to create a Connect.

caCerts

Array

Collection of CA certificates that should be in the chain of client certificates used for produce/consume.

Must not be empty

supportTier

String

A valid URI of Support Tier for the instance

shortName

String

A short name of the instance.

Must match the regular expression (?i)^[a-z0-9]+$. Must not be empty. Size must be between 2 and 12 inclusive

properties

Object

A list of Instance specific variables in Key,Value format.

Curl request

$ curl 'http://api.example.com/instances' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "name" : "AEB LST",
  "description" : "AEB Load Stress Testing Instance",
  "instanceClusters" : [ {
    "cluster" : "http://api.example.com/clusters/f2e75fe2226745bea34ea9f56621f78f",
    "schemaRegistryUrls" : "schema.registry.local:24001,schema.registry.local:24002"
  } ],
  "supportTier" : "http://api.example.com/supportTiers/14cadc6238fc4695916a8053302743f5",
  "caCerts" : [ {
    "pem" : "-----BEGIN CERTIFICATE-----\nMIIFJjCCAw6gAwIBAgIJAINuAirfnRU6MA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNV\nBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODAeFw0xODA1MjkxMDM0MTRaFw0zODA1\nMjQxMDM0MTRaMCAxHjAcBgNVBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODCCAiIw\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVDjbhq3TGuQ6INTZ+dhSIgsdbq\nw2nxF3myrS7v89bcNxMyLypWYTmR4OAYRXRBnW4KX6sTubPyL3ogPz6hXmfmPfAz\n+X//HTIiybL3e3qwxqWphp09+JT6veEp/e/wEEjSMj5nsxkDEjj9JEQWu/1B+N+V\nXOJkTYFy05ZgeWplkyLwT71myF047aISK27a+VebBMaPpvvetScbMSwxAbk51cGV\nUC4gpwvnvsbp/CRuMV0dYzkeTmxgn860l3s8+7qUJoOrtiO0cDpv97SK9Ck9ef1k\nR6KFttzxb/u+eMFi3RUErEGwE8P3thTseXRkp5hMwcyaSQv0wfLawlwcNFGOzsBx\nfJS7QUIUpEyzRqj5Ppgaj530APxbgitLOfVLZ2DvcBcmnQns6OE+uwymuvAj8Ftj\n6AFJXH2lmswHLl5uD9kIOwmpZg4NZLP2Qv+WOT6HLgI7Kv1z0OV2H7UlWA7hwQXl\noQ6fJ2YLEhT+GM9xHKJ+DQCxvjWvtGUSb/Dk0j/R9mpSFfHvVJgE/xV+7F7Vlyw5\n/cDpF3GZOTGQ/MFy4RqRrTtjnZw2/bZZyJ+Xb743OeQhABFUdadh8cmyehDregtr\nalHxtjKxCxrT55OHCYhbCoz6nEnQURD7EPQhU5puUKalRq2ApDkveIk8uj0HQmQm\nKyRuNX7M6vCoWnpxAgMBAAGjYzBhMB0GA1UdDgQWBBR0o48OpIVDoF+TQj9qwGQH\nK3mCxTAfBgNVHSMEGDAWgBR0o48OpIVDoF+TQj9qwGQHK3mCxTAPBgNVHRMBAf8E\nBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAbJanqR4P\nmr05AyAu8vlrLsleXA8VAPDiaaYStYH5cIdBBWkaIxanLFDmbyQwKkKdkHQWV9X8\n1P52q49T9RsoBsEOmwdiaCY2PEUz7Y3bFW0UeM+k65VlHlXWywRM6+O02t4TrJXH\nF6h7vPon01OwhgW9Yil/Kr+yyZK50Ic+pm4UhHmtxY932cNaRCdae5tKsjabsP7Z\nrdAksLia8mTp+HADkZJ1uODxyDh0S1WMKB5JoHYBrmtUr1NYLgRC6SinhK4r7rbi\nEWuurE605Nm//jv3Czdy8gEsMDtXLZYY0iqGnD11MAJFXyQ6PG2eq1cXcsJNRojm\n8D4ipfQ+z4bp9dDVR2DzVyTYe4yuhZuIe2phOhPc8KkBaXQRMHfVKyeEmzqEFLaM\nkfaDZkRsrMZSqh+KJoxDG3h8UqssChX+cuZdsjRhNWRqfbB20I9Upwa+XooyCU4E\nEkYyFTMchtvbYZEN/XvlPfhK5JB9eJ5rrcE8hKsP3gftchWWqCDedKugvZW/t5Vk\nlc+z4IjiJFnRDfcr4Z5V2Hpseyno3AEK7aUdJlmuPnxoImFXfQ4jUguM/wznJHl7\nXv9T0oaBVHM7Bd6PlES04Oho0KZXS6NryTsZn9GFV4qGZj5lEeOVl15AOfeIjP/I\nokA2uUH/ZuJlR/BEmqbLt5HWPRNT/GgLfPY=\n-----END CERTIFICATE-----\n"
  } ],
  "apiUrl" : "http://boxtel-lst.instance.local",
  "shortName" : "lst",
  "connectEnabled" : false
}'

HTTP request

POST /instances HTTP/1.1
realm: rabo
Content-Length: 2387
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "name" : "AEB LST",
  "description" : "AEB Load Stress Testing Instance",
  "instanceClusters" : [ {
    "cluster" : "http://api.example.com/clusters/f2e75fe2226745bea34ea9f56621f78f",
    "schemaRegistryUrls" : "schema.registry.local:24001,schema.registry.local:24002"
  } ],
  "supportTier" : "http://api.example.com/supportTiers/14cadc6238fc4695916a8053302743f5",
  "caCerts" : [ {
    "pem" : "-----BEGIN CERTIFICATE-----\nMIIFJjCCAw6gAwIBAgIJAINuAirfnRU6MA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNV\nBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODAeFw0xODA1MjkxMDM0MTRaFw0zODA1\nMjQxMDM0MTRaMCAxHjAcBgNVBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODCCAiIw\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVDjbhq3TGuQ6INTZ+dhSIgsdbq\nw2nxF3myrS7v89bcNxMyLypWYTmR4OAYRXRBnW4KX6sTubPyL3ogPz6hXmfmPfAz\n+X//HTIiybL3e3qwxqWphp09+JT6veEp/e/wEEjSMj5nsxkDEjj9JEQWu/1B+N+V\nXOJkTYFy05ZgeWplkyLwT71myF047aISK27a+VebBMaPpvvetScbMSwxAbk51cGV\nUC4gpwvnvsbp/CRuMV0dYzkeTmxgn860l3s8+7qUJoOrtiO0cDpv97SK9Ck9ef1k\nR6KFttzxb/u+eMFi3RUErEGwE8P3thTseXRkp5hMwcyaSQv0wfLawlwcNFGOzsBx\nfJS7QUIUpEyzRqj5Ppgaj530APxbgitLOfVLZ2DvcBcmnQns6OE+uwymuvAj8Ftj\n6AFJXH2lmswHLl5uD9kIOwmpZg4NZLP2Qv+WOT6HLgI7Kv1z0OV2H7UlWA7hwQXl\noQ6fJ2YLEhT+GM9xHKJ+DQCxvjWvtGUSb/Dk0j/R9mpSFfHvVJgE/xV+7F7Vlyw5\n/cDpF3GZOTGQ/MFy4RqRrTtjnZw2/bZZyJ+Xb743OeQhABFUdadh8cmyehDregtr\nalHxtjKxCxrT55OHCYhbCoz6nEnQURD7EPQhU5puUKalRq2ApDkveIk8uj0HQmQm\nKyRuNX7M6vCoWnpxAgMBAAGjYzBhMB0GA1UdDgQWBBR0o48OpIVDoF+TQj9qwGQH\nK3mCxTAfBgNVHSMEGDAWgBR0o48OpIVDoF+TQj9qwGQHK3mCxTAPBgNVHRMBAf8E\nBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAbJanqR4P\nmr05AyAu8vlrLsleXA8VAPDiaaYStYH5cIdBBWkaIxanLFDmbyQwKkKdkHQWV9X8\n1P52q49T9RsoBsEOmwdiaCY2PEUz7Y3bFW0UeM+k65VlHlXWywRM6+O02t4TrJXH\nF6h7vPon01OwhgW9Yil/Kr+yyZK50Ic+pm4UhHmtxY932cNaRCdae5tKsjabsP7Z\nrdAksLia8mTp+HADkZJ1uODxyDh0S1WMKB5JoHYBrmtUr1NYLgRC6SinhK4r7rbi\nEWuurE605Nm//jv3Czdy8gEsMDtXLZYY0iqGnD11MAJFXyQ6PG2eq1cXcsJNRojm\n8D4ipfQ+z4bp9dDVR2DzVyTYe4yuhZuIe2phOhPc8KkBaXQRMHfVKyeEmzqEFLaM\nkfaDZkRsrMZSqh+KJoxDG3h8UqssChX+cuZdsjRhNWRqfbB20I9Upwa+XooyCU4E\nEkYyFTMchtvbYZEN/XvlPfhK5JB9eJ5rrcE8hKsP3gftchWWqCDedKugvZW/t5Vk\nlc+z4IjiJFnRDfcr4Z5V2Hpseyno3AEK7aUdJlmuPnxoImFXfQ4jUguM/wznJHl7\nXv9T0oaBVHM7Bd6PlES04Oho0KZXS6NryTsZn9GFV4qGZj5lEeOVl15AOfeIjP/I\nokA2uUH/ZuJlR/BEmqbLt5HWPRNT/GgLfPY=\n-----END CERTIFICATE-----\n"
  } ],
  "apiUrl" : "http://boxtel-lst.instance.local",
  "shortName" : "lst",
  "connectEnabled" : false
}

HTTP response

HTTP/1.1 201 Created
ETag: "0"
Last-Modified: Thu, 22 Apr 2021 14:34:19 GMT
Content-Type: application/hal+json;charset=UTF-8
Location: http://api.example.com/instances/1cb24c4db49f43b9b8ae1bd9cf057bcd
Content-Length: 3598

{
  "properties" : {
    "replication.factor" : "1",
    "cleanup.policy" : "delete",
    "num.partitions" : "12",
    "min.insync.replicas" : "1",
    "segment.ms" : "86400000",
    "retention.ms" : "604800000"
  },
  "name" : "AEB LST",
  "description" : "AEB Load Stress Testing Instance",
  "apiUrl" : "http://boxtel-lst.instance.local",
  "instanceClusters" : [ {
    "schemaRegistryUrls" : "schema.registry.local:24001,schema.registry.local:24002",
    "_links" : {
      "cluster" : {
        "href" : "...",
        "title" : "A cluster"
      }
    }
  } ],
  "caCerts" : [ {
    "pem" : "-----BEGIN CERTIFICATE-----\nMIIFJjCCAw6gAwIBAgIJAINuAirfnRU6MA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNV\nBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODAeFw0xODA1MjkxMDM0MTRaFw0zODA1\nMjQxMDM0MTRaMCAxHjAcBgNVBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODCCAiIw\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVDjbhq3TGuQ6INTZ+dhSIgsdbq\nw2nxF3myrS7v89bcNxMyLypWYTmR4OAYRXRBnW4KX6sTubPyL3ogPz6hXmfmPfAz\n+X//HTIiybL3e3qwxqWphp09+JT6veEp/e/wEEjSMj5nsxkDEjj9JEQWu/1B+N+V\nXOJkTYFy05ZgeWplkyLwT71myF047aISK27a+VebBMaPpvvetScbMSwxAbk51cGV\nUC4gpwvnvsbp/CRuMV0dYzkeTmxgn860l3s8+7qUJoOrtiO0cDpv97SK9Ck9ef1k\nR6KFttzxb/u+eMFi3RUErEGwE8P3thTseXRkp5hMwcyaSQv0wfLawlwcNFGOzsBx\nfJS7QUIUpEyzRqj5Ppgaj530APxbgitLOfVLZ2DvcBcmnQns6OE+uwymuvAj8Ftj\n6AFJXH2lmswHLl5uD9kIOwmpZg4NZLP2Qv+WOT6HLgI7Kv1z0OV2H7UlWA7hwQXl\noQ6fJ2YLEhT+GM9xHKJ+DQCxvjWvtGUSb/Dk0j/R9mpSFfHvVJgE/xV+7F7Vlyw5\n/cDpF3GZOTGQ/MFy4RqRrTtjnZw2/bZZyJ+Xb743OeQhABFUdadh8cmyehDregtr\nalHxtjKxCxrT55OHCYhbCoz6nEnQURD7EPQhU5puUKalRq2ApDkveIk8uj0HQmQm\nKyRuNX7M6vCoWnpxAgMBAAGjYzBhMB0GA1UdDgQWBBR0o48OpIVDoF+TQj9qwGQH\nK3mCxTAfBgNVHSMEGDAWgBR0o48OpIVDoF+TQj9qwGQHK3mCxTAPBgNVHRMBAf8E\nBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAbJanqR4P\nmr05AyAu8vlrLsleXA8VAPDiaaYStYH5cIdBBWkaIxanLFDmbyQwKkKdkHQWV9X8\n1P52q49T9RsoBsEOmwdiaCY2PEUz7Y3bFW0UeM+k65VlHlXWywRM6+O02t4TrJXH\nF6h7vPon01OwhgW9Yil/Kr+yyZK50Ic+pm4UhHmtxY932cNaRCdae5tKsjabsP7Z\nrdAksLia8mTp+HADkZJ1uODxyDh0S1WMKB5JoHYBrmtUr1NYLgRC6SinhK4r7rbi\nEWuurE605Nm//jv3Czdy8gEsMDtXLZYY0iqGnD11MAJFXyQ6PG2eq1cXcsJNRojm\n8D4ipfQ+z4bp9dDVR2DzVyTYe4yuhZuIe2phOhPc8KkBaXQRMHfVKyeEmzqEFLaM\nkfaDZkRsrMZSqh+KJoxDG3h8UqssChX+cuZdsjRhNWRqfbB20I9Upwa+XooyCU4E\nEkYyFTMchtvbYZEN/XvlPfhK5JB9eJ5rrcE8hKsP3gftchWWqCDedKugvZW/t5Vk\nlc+z4IjiJFnRDfcr4Z5V2Hpseyno3AEK7aUdJlmuPnxoImFXfQ4jUguM/wznJHl7\nXv9T0oaBVHM7Bd6PlES04Oho0KZXS6NryTsZn9GFV4qGZj5lEeOVl15AOfeIjP/I\nokA2uUH/ZuJlR/BEmqbLt5HWPRNT/GgLfPY=\n-----END CERTIFICATE-----\n",
    "expiresOn" : "2038-05-24T10:34:14"
  } ],
  "shortName" : "lst",
  "connectEnabled" : false,
  "connectUrls" : null,
  "uid" : "1cb24c4db49f43b9b8ae1bd9cf057bcd",
  "created_at" : "2021-04-22T14:34:19.322128",
  "modified_at" : "2021-04-22T14:34:19.322128",
  "created_by" : "tenadmin@rabobank.nl",
  "modified_by" : "tenadmin@rabobank.nl",
  "_embedded" : {
    "supportTier" : {
      "name" : "GOLD",
      "description" : "This is gold",
      "uid" : "14cadc6238fc4695916a8053302743f5",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "instance" : {
      "href" : "...",
      "templated" : true,
      "title" : "An instance"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "synchronize" : {
      "href" : "..."
    },
    "supportTier" : {
      "href" : "...",
      "templated" : true
    }
  }
}

Instance properties

Every instance object holds certain important properties that apply to every stream that ends up on this instance. These are explained below:

replication.factor

Number of replicas maintained by Kafka for each stream. Default value is 1.

num.partitions

Number of partitions created by Kafka for each stream. Default value is 12.

cleanup.policy

Policy used to cleanup segments beyond the retention window. Possible values are delete, compact. Default value is delete.

min.insync.replicas

The number of insync replicas that must be avaialable before a produce is considered successful. Default value is 1.

segment.ms

Time duration after which Kafka will force the log to roll even if the segment file isn’t full. Default value is 86400s

Retrieve an instance

The instances/{id} item resource is used to retrieve, update and delete individual Instances.

A GET request will retrieve the details of an Instance.

Curl request

$ curl 'http://api.example.com/instances/b9301e9144324928911f7d83ec40c478' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'

HTTP request

GET /instances/b9301e9144324928911f7d83ec40c478 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token

HTTP response

HTTP/1.1 200 OK
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 3700
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "properties" : {
    "replication.factor" : "2",
    "num.partitions" : "3",
    "min.insync.replicas" : "1",
    "retention.ms" : "172800000",
    "segment.ms" : "172800000"
  },
  "name" : "Rabo OTA",
  "description" : "Rabo OTA Instance",
  "apiUrl" : "http://aeb-ota.local",
  "instanceClusters" : [ {
    "schemaRegistryUrls" : "https://schema.local3",
    "_links" : {
      "cluster" : {
        "href" : "...",
        "title" : "A cluster"
      }
    }
  }, {
    "schemaRegistryUrls" : "https://schema.local1,https://schema.local2",
    "_links" : {
      "cluster" : {
        "href" : "...",
        "title" : "A cluster"
      }
    }
  } ],
  "caCerts" : [ {
    "pem" : "-----BEGIN CERTIFICATE-----\\nMIIFJjCCAw6gAwIBAgIJAINuAirfnRU6MA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNV\\nBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODAeFw0xODA1MjkxMDM0MTRaFw0zODA1\\nMjQxMDM0MTRaMCAxHjAcBgNVBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODCCAiIw\\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVDjbhq3TGuQ6INTZ+dhSIgsdbq\\nw2nxF3myrS7v89bcNxMyLypWYTmR4OAYRXRBnW4KX6sTubPyL3ogPz6hXmfmPfAz\\n+X//HTIiybL3e3qwxqWphp09+JT6veEp/e/wEEjSMj5nsxkDEjj9JEQWu/1B+N+V\\nXOJkTYFy05ZgeWplkyLwT71myF047aISK27a+VebBMaPpvvetScbMSwxAbk51cGV\\nUC4gpwvnvsbp/CRuMV0dYzkeTmxgn860l3s8+7qUJoOrtiO0cDpv97SK9Ck9ef1k\\nR6KFttzxb/u+eMFi3RUErEGwE8P3thTseXRkp5hMwcyaSQv0wfLawlwcNFGOzsBx\\nfJS7QUIUpEyzRqj5Ppgaj530APxbgitLOfVLZ2DvcBcmnQns6OE+uwymuvAj8Ftj\\n6AFJXH2lmswHLl5uD9kIOwmpZg4NZLP2Qv+WOT6HLgI7Kv1z0OV2H7UlWA7hwQXl\\noQ6fJ2YLEhT+GM9xHKJ+DQCxvjWvtGUSb/Dk0j/R9mpSFfHvVJgE/xV+7F7Vlyw5\\n/cDpF3GZOTGQ/MFy4RqRrTtjnZw2/bZZyJ+Xb743OeQhABFUdadh8cmyehDregtr\\nalHxtjKxCxrT55OHCYhbCoz6nEnQURD7EPQhU5puUKalRq2ApDkveIk8uj0HQmQm\\nKyRuNX7M6vCoWnpxAgMBAAGjYzBhMB0GA1UdDgQWBBR0o48OpIVDoF+TQj9qwGQH\\nK3mCxTAfBgNVHSMEGDAWgBR0o48OpIVDoF+TQj9qwGQHK3mCxTAPBgNVHRMBAf8E\\nBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAbJanqR4P\\nmr05AyAu8vlrLsleXA8VAPDiaaYStYH5cIdBBWkaIxanLFDmbyQwKkKdkHQWV9X8\\n1P52q49T9RsoBsEOmwdiaCY2PEUz7Y3bFW0UeM+k65VlHlXWywRM6+O02t4TrJXH\\nF6h7vPon01OwhgW9Yil/Kr+yyZK50Ic+pm4UhHmtxY932cNaRCdae5tKsjabsP7Z\\nrdAksLia8mTp+HADkZJ1uODxyDh0S1WMKB5JoHYBrmtUr1NYLgRC6SinhK4r7rbi\\nEWuurE605Nm//jv3Czdy8gEsMDtXLZYY0iqGnD11MAJFXyQ6PG2eq1cXcsJNRojm\\n8D4ipfQ+z4bp9dDVR2DzVyTYe4yuhZuIe2phOhPc8KkBaXQRMHfVKyeEmzqEFLaM\\nkfaDZkRsrMZSqh+KJoxDG3h8UqssChX+cuZdsjRhNWRqfbB20I9Upwa+XooyCU4E\\nEkYyFTMchtvbYZEN/XvlPfhK5JB9eJ5rrcE8hKsP3gftchWWqCDedKugvZW/t5Vk\\nlc+z4IjiJFnRDfcr4Z5V2Hpseyno3AEK7aUdJlmuPnxoImFXfQ4jUguM/wznJHl7\\nXv9T0oaBVHM7Bd6PlES04Oho0KZXS6NryTsZn9GFV4qGZj5lEeOVl15AOfeIjP/I\\nokA2uUH/ZuJlR/BEmqbLt5HWPRNT/GgLfPY=\\n-----END CERTIFICATE-----\\n",
    "expiresOn" : null
  } ],
  "shortName" : "ota",
  "connectEnabled" : true,
  "connectUrls" : "https://connect1.url,https://connect2.url",
  "uid" : "b9301e9144324928911f7d83ec40c478",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_embedded" : {
    "supportTier" : {
      "name" : "GOLD",
      "description" : "This is gold",
      "uid" : "14cadc6238fc4695916a8053302743f5",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "instance" : {
      "href" : "...",
      "templated" : true,
      "title" : "An instance"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "synchronize" : {
      "href" : "..."
    },
    "supportTier" : {
      "href" : "...",
      "templated" : true
    }
  }
}
Relation Description

synchronize

Existence of this link indicates that currently authenticated user can synchronize this Instance.

Update an instance

A PATCH request is used to update an instance.

To leave an attribute of an instance unchanged, any of the above may be omitted from the request.

If an array of Clusters is supplied in the request body, it will replace existing Clusters, if any.
$ curl 'http://api.example.com/instances/b9301e9144324928911f7d83ec40c478' -i -X PATCH \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "description" : "modified description",
  "instanceClusters" : [ {
    "cluster" : "http://api.example.com/clusters/f2e75fe2226745bea34ea9f56621f78f",
    "schemaRegistryUrls" : "schema.registry.local:24001,schema.registry.local:24002"
  } ],
  "caCerts" : [ {
    "pem" : "-----BEGIN CERTIFICATE-----\nMIIFJjCCAw6gAwIBAgIJAINuAirfnRU6MA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNV\nBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODAeFw0xODA1MjkxMDM0MTRaFw0zODA1\nMjQxMDM0MTRaMCAxHjAcBgNVBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODCCAiIw\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVDjbhq3TGuQ6INTZ+dhSIgsdbq\nw2nxF3myrS7v89bcNxMyLypWYTmR4OAYRXRBnW4KX6sTubPyL3ogPz6hXmfmPfAz\n+X//HTIiybL3e3qwxqWphp09+JT6veEp/e/wEEjSMj5nsxkDEjj9JEQWu/1B+N+V\nXOJkTYFy05ZgeWplkyLwT71myF047aISK27a+VebBMaPpvvetScbMSwxAbk51cGV\nUC4gpwvnvsbp/CRuMV0dYzkeTmxgn860l3s8+7qUJoOrtiO0cDpv97SK9Ck9ef1k\nR6KFttzxb/u+eMFi3RUErEGwE8P3thTseXRkp5hMwcyaSQv0wfLawlwcNFGOzsBx\nfJS7QUIUpEyzRqj5Ppgaj530APxbgitLOfVLZ2DvcBcmnQns6OE+uwymuvAj8Ftj\n6AFJXH2lmswHLl5uD9kIOwmpZg4NZLP2Qv+WOT6HLgI7Kv1z0OV2H7UlWA7hwQXl\noQ6fJ2YLEhT+GM9xHKJ+DQCxvjWvtGUSb/Dk0j/R9mpSFfHvVJgE/xV+7F7Vlyw5\n/cDpF3GZOTGQ/MFy4RqRrTtjnZw2/bZZyJ+Xb743OeQhABFUdadh8cmyehDregtr\nalHxtjKxCxrT55OHCYhbCoz6nEnQURD7EPQhU5puUKalRq2ApDkveIk8uj0HQmQm\nKyRuNX7M6vCoWnpxAgMBAAGjYzBhMB0GA1UdDgQWBBR0o48OpIVDoF+TQj9qwGQH\nK3mCxTAfBgNVHSMEGDAWgBR0o48OpIVDoF+TQj9qwGQHK3mCxTAPBgNVHRMBAf8E\nBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAbJanqR4P\nmr05AyAu8vlrLsleXA8VAPDiaaYStYH5cIdBBWkaIxanLFDmbyQwKkKdkHQWV9X8\n1P52q49T9RsoBsEOmwdiaCY2PEUz7Y3bFW0UeM+k65VlHlXWywRM6+O02t4TrJXH\nF6h7vPon01OwhgW9Yil/Kr+yyZK50Ic+pm4UhHmtxY932cNaRCdae5tKsjabsP7Z\nrdAksLia8mTp+HADkZJ1uODxyDh0S1WMKB5JoHYBrmtUr1NYLgRC6SinhK4r7rbi\nEWuurE605Nm//jv3Czdy8gEsMDtXLZYY0iqGnD11MAJFXyQ6PG2eq1cXcsJNRojm\n8D4ipfQ+z4bp9dDVR2DzVyTYe4yuhZuIe2phOhPc8KkBaXQRMHfVKyeEmzqEFLaM\nkfaDZkRsrMZSqh+KJoxDG3h8UqssChX+cuZdsjRhNWRqfbB20I9Upwa+XooyCU4E\nEkYyFTMchtvbYZEN/XvlPfhK5JB9eJ5rrcE8hKsP3gftchWWqCDedKugvZW/t5Vk\nlc+z4IjiJFnRDfcr4Z5V2Hpseyno3AEK7aUdJlmuPnxoImFXfQ4jUguM/wznJHl7\nXv9T0oaBVHM7Bd6PlES04Oho0KZXS6NryTsZn9GFV4qGZj5lEeOVl15AOfeIjP/I\nokA2uUH/ZuJlR/BEmqbLt5HWPRNT/GgLfPY=\n-----END CERTIFICATE-----\n"
  } ]
}'
PATCH /instances/b9301e9144324928911f7d83ec40c478 HTTP/1.1
Content-Length: 2163
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "description" : "modified description",
  "instanceClusters" : [ {
    "cluster" : "http://api.example.com/clusters/f2e75fe2226745bea34ea9f56621f78f",
    "schemaRegistryUrls" : "schema.registry.local:24001,schema.registry.local:24002"
  } ],
  "caCerts" : [ {
    "pem" : "-----BEGIN CERTIFICATE-----\nMIIFJjCCAw6gAwIBAgIJAINuAirfnRU6MA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNV\nBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODAeFw0xODA1MjkxMDM0MTRaFw0zODA1\nMjQxMDM0MTRaMCAxHjAcBgNVBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODCCAiIw\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVDjbhq3TGuQ6INTZ+dhSIgsdbq\nw2nxF3myrS7v89bcNxMyLypWYTmR4OAYRXRBnW4KX6sTubPyL3ogPz6hXmfmPfAz\n+X//HTIiybL3e3qwxqWphp09+JT6veEp/e/wEEjSMj5nsxkDEjj9JEQWu/1B+N+V\nXOJkTYFy05ZgeWplkyLwT71myF047aISK27a+VebBMaPpvvetScbMSwxAbk51cGV\nUC4gpwvnvsbp/CRuMV0dYzkeTmxgn860l3s8+7qUJoOrtiO0cDpv97SK9Ck9ef1k\nR6KFttzxb/u+eMFi3RUErEGwE8P3thTseXRkp5hMwcyaSQv0wfLawlwcNFGOzsBx\nfJS7QUIUpEyzRqj5Ppgaj530APxbgitLOfVLZ2DvcBcmnQns6OE+uwymuvAj8Ftj\n6AFJXH2lmswHLl5uD9kIOwmpZg4NZLP2Qv+WOT6HLgI7Kv1z0OV2H7UlWA7hwQXl\noQ6fJ2YLEhT+GM9xHKJ+DQCxvjWvtGUSb/Dk0j/R9mpSFfHvVJgE/xV+7F7Vlyw5\n/cDpF3GZOTGQ/MFy4RqRrTtjnZw2/bZZyJ+Xb743OeQhABFUdadh8cmyehDregtr\nalHxtjKxCxrT55OHCYhbCoz6nEnQURD7EPQhU5puUKalRq2ApDkveIk8uj0HQmQm\nKyRuNX7M6vCoWnpxAgMBAAGjYzBhMB0GA1UdDgQWBBR0o48OpIVDoF+TQj9qwGQH\nK3mCxTAfBgNVHSMEGDAWgBR0o48OpIVDoF+TQj9qwGQHK3mCxTAPBgNVHRMBAf8E\nBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAbJanqR4P\nmr05AyAu8vlrLsleXA8VAPDiaaYStYH5cIdBBWkaIxanLFDmbyQwKkKdkHQWV9X8\n1P52q49T9RsoBsEOmwdiaCY2PEUz7Y3bFW0UeM+k65VlHlXWywRM6+O02t4TrJXH\nF6h7vPon01OwhgW9Yil/Kr+yyZK50Ic+pm4UhHmtxY932cNaRCdae5tKsjabsP7Z\nrdAksLia8mTp+HADkZJ1uODxyDh0S1WMKB5JoHYBrmtUr1NYLgRC6SinhK4r7rbi\nEWuurE605Nm//jv3Czdy8gEsMDtXLZYY0iqGnD11MAJFXyQ6PG2eq1cXcsJNRojm\n8D4ipfQ+z4bp9dDVR2DzVyTYe4yuhZuIe2phOhPc8KkBaXQRMHfVKyeEmzqEFLaM\nkfaDZkRsrMZSqh+KJoxDG3h8UqssChX+cuZdsjRhNWRqfbB20I9Upwa+XooyCU4E\nEkYyFTMchtvbYZEN/XvlPfhK5JB9eJ5rrcE8hKsP3gftchWWqCDedKugvZW/t5Vk\nlc+z4IjiJFnRDfcr4Z5V2Hpseyno3AEK7aUdJlmuPnxoImFXfQ4jUguM/wznJHl7\nXv9T0oaBVHM7Bd6PlES04Oho0KZXS6NryTsZn9GFV4qGZj5lEeOVl15AOfeIjP/I\nokA2uUH/ZuJlR/BEmqbLt5HWPRNT/GgLfPY=\n-----END CERTIFICATE-----\n"
  } ]
}
HTTP/1.1 204 No Content
ETag: "0"
Last-Modified: Thu, 7 Jun 2018 23:16:23 GMT

Update an instance with Connect enable

The PATCH request can be used to turn on Connect functionality for the instance.

Curl request

$ curl 'http://api.example.com/instances/b9301e9144324928911f7d83ec40c478' -i -X PATCH \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "caCerts" : [ {
    "pem" : "-----BEGIN CERTIFICATE-----\nMIIFJjCCAw6gAwIBAgIJAINuAirfnRU6MA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNV\nBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODAeFw0xODA1MjkxMDM0MTRaFw0zODA1\nMjQxMDM0MTRaMCAxHjAcBgNVBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODCCAiIw\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVDjbhq3TGuQ6INTZ+dhSIgsdbq\nw2nxF3myrS7v89bcNxMyLypWYTmR4OAYRXRBnW4KX6sTubPyL3ogPz6hXmfmPfAz\n+X//HTIiybL3e3qwxqWphp09+JT6veEp/e/wEEjSMj5nsxkDEjj9JEQWu/1B+N+V\nXOJkTYFy05ZgeWplkyLwT71myF047aISK27a+VebBMaPpvvetScbMSwxAbk51cGV\nUC4gpwvnvsbp/CRuMV0dYzkeTmxgn860l3s8+7qUJoOrtiO0cDpv97SK9Ck9ef1k\nR6KFttzxb/u+eMFi3RUErEGwE8P3thTseXRkp5hMwcyaSQv0wfLawlwcNFGOzsBx\nfJS7QUIUpEyzRqj5Ppgaj530APxbgitLOfVLZ2DvcBcmnQns6OE+uwymuvAj8Ftj\n6AFJXH2lmswHLl5uD9kIOwmpZg4NZLP2Qv+WOT6HLgI7Kv1z0OV2H7UlWA7hwQXl\noQ6fJ2YLEhT+GM9xHKJ+DQCxvjWvtGUSb/Dk0j/R9mpSFfHvVJgE/xV+7F7Vlyw5\n/cDpF3GZOTGQ/MFy4RqRrTtjnZw2/bZZyJ+Xb743OeQhABFUdadh8cmyehDregtr\nalHxtjKxCxrT55OHCYhbCoz6nEnQURD7EPQhU5puUKalRq2ApDkveIk8uj0HQmQm\nKyRuNX7M6vCoWnpxAgMBAAGjYzBhMB0GA1UdDgQWBBR0o48OpIVDoF+TQj9qwGQH\nK3mCxTAfBgNVHSMEGDAWgBR0o48OpIVDoF+TQj9qwGQHK3mCxTAPBgNVHRMBAf8E\nBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAbJanqR4P\nmr05AyAu8vlrLsleXA8VAPDiaaYStYH5cIdBBWkaIxanLFDmbyQwKkKdkHQWV9X8\n1P52q49T9RsoBsEOmwdiaCY2PEUz7Y3bFW0UeM+k65VlHlXWywRM6+O02t4TrJXH\nF6h7vPon01OwhgW9Yil/Kr+yyZK50Ic+pm4UhHmtxY932cNaRCdae5tKsjabsP7Z\nrdAksLia8mTp+HADkZJ1uODxyDh0S1WMKB5JoHYBrmtUr1NYLgRC6SinhK4r7rbi\nEWuurE605Nm//jv3Czdy8gEsMDtXLZYY0iqGnD11MAJFXyQ6PG2eq1cXcsJNRojm\n8D4ipfQ+z4bp9dDVR2DzVyTYe4yuhZuIe2phOhPc8KkBaXQRMHfVKyeEmzqEFLaM\nkfaDZkRsrMZSqh+KJoxDG3h8UqssChX+cuZdsjRhNWRqfbB20I9Upwa+XooyCU4E\nEkYyFTMchtvbYZEN/XvlPfhK5JB9eJ5rrcE8hKsP3gftchWWqCDedKugvZW/t5Vk\nlc+z4IjiJFnRDfcr4Z5V2Hpseyno3AEK7aUdJlmuPnxoImFXfQ4jUguM/wznJHl7\nXv9T0oaBVHM7Bd6PlES04Oho0KZXS6NryTsZn9GFV4qGZj5lEeOVl15AOfeIjP/I\nokA2uUH/ZuJlR/BEmqbLt5HWPRNT/GgLfPY=\n-----END CERTIFICATE-----\n"
  } ],
  "connectEnabled" : true,
  "connectUrls" : "test-connect-worker-1,test-connect-worker-2"
}'

HTTP request

PATCH /instances/b9301e9144324928911f7d83ec40c478 HTTP/1.1
realm: rabo
Host: api.example.com
Content-Length: 2010
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "caCerts" : [ {
    "pem" : "-----BEGIN CERTIFICATE-----\nMIIFJjCCAw6gAwIBAgIJAINuAirfnRU6MA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNV\nBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODAeFw0xODA1MjkxMDM0MTRaFw0zODA1\nMjQxMDM0MTRaMCAxHjAcBgNVBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODCCAiIw\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVDjbhq3TGuQ6INTZ+dhSIgsdbq\nw2nxF3myrS7v89bcNxMyLypWYTmR4OAYRXRBnW4KX6sTubPyL3ogPz6hXmfmPfAz\n+X//HTIiybL3e3qwxqWphp09+JT6veEp/e/wEEjSMj5nsxkDEjj9JEQWu/1B+N+V\nXOJkTYFy05ZgeWplkyLwT71myF047aISK27a+VebBMaPpvvetScbMSwxAbk51cGV\nUC4gpwvnvsbp/CRuMV0dYzkeTmxgn860l3s8+7qUJoOrtiO0cDpv97SK9Ck9ef1k\nR6KFttzxb/u+eMFi3RUErEGwE8P3thTseXRkp5hMwcyaSQv0wfLawlwcNFGOzsBx\nfJS7QUIUpEyzRqj5Ppgaj530APxbgitLOfVLZ2DvcBcmnQns6OE+uwymuvAj8Ftj\n6AFJXH2lmswHLl5uD9kIOwmpZg4NZLP2Qv+WOT6HLgI7Kv1z0OV2H7UlWA7hwQXl\noQ6fJ2YLEhT+GM9xHKJ+DQCxvjWvtGUSb/Dk0j/R9mpSFfHvVJgE/xV+7F7Vlyw5\n/cDpF3GZOTGQ/MFy4RqRrTtjnZw2/bZZyJ+Xb743OeQhABFUdadh8cmyehDregtr\nalHxtjKxCxrT55OHCYhbCoz6nEnQURD7EPQhU5puUKalRq2ApDkveIk8uj0HQmQm\nKyRuNX7M6vCoWnpxAgMBAAGjYzBhMB0GA1UdDgQWBBR0o48OpIVDoF+TQj9qwGQH\nK3mCxTAfBgNVHSMEGDAWgBR0o48OpIVDoF+TQj9qwGQHK3mCxTAPBgNVHRMBAf8E\nBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAbJanqR4P\nmr05AyAu8vlrLsleXA8VAPDiaaYStYH5cIdBBWkaIxanLFDmbyQwKkKdkHQWV9X8\n1P52q49T9RsoBsEOmwdiaCY2PEUz7Y3bFW0UeM+k65VlHlXWywRM6+O02t4TrJXH\nF6h7vPon01OwhgW9Yil/Kr+yyZK50Ic+pm4UhHmtxY932cNaRCdae5tKsjabsP7Z\nrdAksLia8mTp+HADkZJ1uODxyDh0S1WMKB5JoHYBrmtUr1NYLgRC6SinhK4r7rbi\nEWuurE605Nm//jv3Czdy8gEsMDtXLZYY0iqGnD11MAJFXyQ6PG2eq1cXcsJNRojm\n8D4ipfQ+z4bp9dDVR2DzVyTYe4yuhZuIe2phOhPc8KkBaXQRMHfVKyeEmzqEFLaM\nkfaDZkRsrMZSqh+KJoxDG3h8UqssChX+cuZdsjRhNWRqfbB20I9Upwa+XooyCU4E\nEkYyFTMchtvbYZEN/XvlPfhK5JB9eJ5rrcE8hKsP3gftchWWqCDedKugvZW/t5Vk\nlc+z4IjiJFnRDfcr4Z5V2Hpseyno3AEK7aUdJlmuPnxoImFXfQ4jUguM/wznJHl7\nXv9T0oaBVHM7Bd6PlES04Oho0KZXS6NryTsZn9GFV4qGZj5lEeOVl15AOfeIjP/I\nokA2uUH/ZuJlR/BEmqbLt5HWPRNT/GgLfPY=\n-----END CERTIFICATE-----\n"
  } ],
  "connectEnabled" : true,
  "connectUrls" : "test-connect-worker-1,test-connect-worker-2"
}

HTTP response

HTTP/1.1 204 No Content
ETag: "0"
Last-Modified: Thu, 7 Jun 2018 23:16:23 GMT

Snippet links not found for operation::instances/patch-connect

Synchronize an instance

A synchronize operation is defined as the process of (re)-deploying all streams that are linked to this instance on the Kafka clusters. This effectively syncs the configuration stored in the database to every Kafka cluster that is part of this instance.

The process involves identifying all environments that are linked to this instance. For each environment, streams that have valid configurations (StreamConfig) are identified and deployed on the cluster.

This is a high-risk operation only allowed for certain roles. Check with your administrator for more details.

A POST request on /instances/uid/synchronize is used to synchronize an instance. When successful, a 204 No content response is returned. Depending on the number of streams that need to be synced, allow at least 30 seconds for the operation to complete.

Curl request

$ curl 'http://api.example.com/instances/b9301e9144324928911f7d83ec40c478/synchronize' -i -X POST \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN'

HTTP request

POST /instances/b9301e9144324928911f7d83ec40c478/synchronize HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

HTTP response

HTTP/1.1 204 No Content

Instance search endpoints

/instances/search/findByName

Search for an instance by exact name.

Parameter Description

name

Instance name to search for.

GET /instances/search/findByName?name=Rabo+OTA HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 3546
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "properties" : {
    "replication.factor" : "2",
    "num.partitions" : "3",
    "min.insync.replicas" : "1",
    "retention.ms" : "172800000",
    "segment.ms" : "172800000"
  },
  "name" : "Rabo OTA",
  "description" : "Rabo OTA Instance",
  "apiUrl" : "http://aeb-ota.local",
  "instanceClusters" : [ {
    "schemaRegistryUrls" : "https://schema.local3",
    "_links" : {
      "cluster" : {
        "href" : "...",
        "title" : "A cluster"
      }
    }
  }, {
    "schemaRegistryUrls" : "https://schema.local1,https://schema.local2",
    "_links" : {
      "cluster" : {
        "href" : "...",
        "title" : "A cluster"
      }
    }
  } ],
  "caCerts" : [ {
    "pem" : "-----BEGIN CERTIFICATE-----\\nMIIFJjCCAw6gAwIBAgIJAINuAirfnRU6MA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNV\\nBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODAeFw0xODA1MjkxMDM0MTRaFw0zODA1\\nMjQxMDM0MTRaMCAxHjAcBgNVBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODCCAiIw\\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVDjbhq3TGuQ6INTZ+dhSIgsdbq\\nw2nxF3myrS7v89bcNxMyLypWYTmR4OAYRXRBnW4KX6sTubPyL3ogPz6hXmfmPfAz\\n+X//HTIiybL3e3qwxqWphp09+JT6veEp/e/wEEjSMj5nsxkDEjj9JEQWu/1B+N+V\\nXOJkTYFy05ZgeWplkyLwT71myF047aISK27a+VebBMaPpvvetScbMSwxAbk51cGV\\nUC4gpwvnvsbp/CRuMV0dYzkeTmxgn860l3s8+7qUJoOrtiO0cDpv97SK9Ck9ef1k\\nR6KFttzxb/u+eMFi3RUErEGwE8P3thTseXRkp5hMwcyaSQv0wfLawlwcNFGOzsBx\\nfJS7QUIUpEyzRqj5Ppgaj530APxbgitLOfVLZ2DvcBcmnQns6OE+uwymuvAj8Ftj\\n6AFJXH2lmswHLl5uD9kIOwmpZg4NZLP2Qv+WOT6HLgI7Kv1z0OV2H7UlWA7hwQXl\\noQ6fJ2YLEhT+GM9xHKJ+DQCxvjWvtGUSb/Dk0j/R9mpSFfHvVJgE/xV+7F7Vlyw5\\n/cDpF3GZOTGQ/MFy4RqRrTtjnZw2/bZZyJ+Xb743OeQhABFUdadh8cmyehDregtr\\nalHxtjKxCxrT55OHCYhbCoz6nEnQURD7EPQhU5puUKalRq2ApDkveIk8uj0HQmQm\\nKyRuNX7M6vCoWnpxAgMBAAGjYzBhMB0GA1UdDgQWBBR0o48OpIVDoF+TQj9qwGQH\\nK3mCxTAfBgNVHSMEGDAWgBR0o48OpIVDoF+TQj9qwGQHK3mCxTAPBgNVHRMBAf8E\\nBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAbJanqR4P\\nmr05AyAu8vlrLsleXA8VAPDiaaYStYH5cIdBBWkaIxanLFDmbyQwKkKdkHQWV9X8\\n1P52q49T9RsoBsEOmwdiaCY2PEUz7Y3bFW0UeM+k65VlHlXWywRM6+O02t4TrJXH\\nF6h7vPon01OwhgW9Yil/Kr+yyZK50Ic+pm4UhHmtxY932cNaRCdae5tKsjabsP7Z\\nrdAksLia8mTp+HADkZJ1uODxyDh0S1WMKB5JoHYBrmtUr1NYLgRC6SinhK4r7rbi\\nEWuurE605Nm//jv3Czdy8gEsMDtXLZYY0iqGnD11MAJFXyQ6PG2eq1cXcsJNRojm\\n8D4ipfQ+z4bp9dDVR2DzVyTYe4yuhZuIe2phOhPc8KkBaXQRMHfVKyeEmzqEFLaM\\nkfaDZkRsrMZSqh+KJoxDG3h8UqssChX+cuZdsjRhNWRqfbB20I9Upwa+XooyCU4E\\nEkYyFTMchtvbYZEN/XvlPfhK5JB9eJ5rrcE8hKsP3gftchWWqCDedKugvZW/t5Vk\\nlc+z4IjiJFnRDfcr4Z5V2Hpseyno3AEK7aUdJlmuPnxoImFXfQ4jUguM/wznJHl7\\nXv9T0oaBVHM7Bd6PlES04Oho0KZXS6NryTsZn9GFV4qGZj5lEeOVl15AOfeIjP/I\\nokA2uUH/ZuJlR/BEmqbLt5HWPRNT/GgLfPY=\\n-----END CERTIFICATE-----\\n",
    "expiresOn" : null
  } ],
  "shortName" : "ota",
  "connectEnabled" : true,
  "connectUrls" : "https://connect1.url,https://connect2.url",
  "uid" : "b9301e9144324928911f7d83ec40c478",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_embedded" : {
    "supportTier" : {
      "name" : "GOLD",
      "description" : "This is gold",
      "uid" : "14cadc6238fc4695916a8053302743f5",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "instance" : {
      "href" : "...",
      "templated" : true,
      "title" : "An instance"
    },
    "supportTier" : {
      "href" : "...",
      "templated" : true
    }
  }
}

/instances/search/findByNameContaining

Search for an instance by name containing search term.

Parameter Description

name

Term to search within instance name.

GET /instances/search/findByNameContaining?name=aeb HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 259

{
  "_embedded" : {
    "instances" : [ ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 0,
    "totalPages" : 0,
    "number" : 0
  }
}

Clusters

A Cluster represents a set of servers working together to form a Kafka cluster. They are usually grouped by location/data center. An AEB Instance will be powered by one or more Clusters.

The clusters resources is used to create and list Clusters.

Cluster Schema

The clusters resource uses the following json-schema:

GET /profile/clusters HTTP/1.1
Accept: application/schema+json
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 1356
Content-Type: application/schema+json;charset=UTF-8

{
  "title" : "Cluster",
  "properties" : {
    "uid" : {
      "title" : "Uid",
      "readOnly" : true,
      "type" : "string"
    },
    "apiUrl" : {
      "title" : "Api url",
      "readOnly" : false,
      "type" : "string"
    },
    "bootstrapServers" : {
      "title" : "Bootstrap servers",
      "readOnly" : false,
      "type" : "array",
      "uniqueItems" : true,
      "items" : {
        "$ref" : "#/definitions/bootstrapServer"
      }
    },
    "name" : {
      "title" : "Name",
      "readOnly" : false,
      "type" : "string"
    },
    "clusterBrowseUrl" : {
      "title" : "Cluster browse url",
      "readOnly" : false,
      "type" : "string"
    },
    "description" : {
      "title" : "Description",
      "readOnly" : false,
      "type" : "string"
    },
    "location" : {
      "title" : "Location",
      "readOnly" : false,
      "type" : "string"
    },
    "billingCloudEnabled" : {
      "title" : "Billing cloud enabled",
      "readOnly" : false,
      "type" : "boolean"
    }
  },
  "definitions" : {
    "bootstrapServer" : {
      "type" : "object",
      "properties" : {
        "bootstrapServer" : {
          "title" : "Bootstrap server",
          "readOnly" : false,
          "type" : "string"
        }
      }
    }
  },
  "type" : "object",
  "$schema" : "http://json-schema.org/draft-04/schema#"
}

List all clusters

A GET request will list all of the service’s Clusters.

Curl request

$ curl 'http://api.example.com/clusters' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'

HTTP request

GET /clusters HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 4154

{
  "_embedded" : {
    "clusters" : [ {
      "name" : "Best Cluster OTA",
      "description" : "",
      "location" : "Best",
      "billingCloudEnabled" : true,
      "apiUrl" : "http://clusterapi-ota.best.local",
      "clusterBrowseUrl" : "http://clusterbrowse-ota.best.local",
      "bootstrapServers" : [ {
        "bootstrapServer" : "bootstrapserver1:9093"
      } ],
      "uid" : "66c12e25ab06458eac988f0d700fbe81",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "cluster" : {
          "href" : "...",
          "title" : "A cluster"
        }
      }
    }, {
      "name" : "Boxtel Cluster OTA",
      "description" : "",
      "location" : "Boxtel",
      "billingCloudEnabled" : true,
      "apiUrl" : "http://clusterapi-ota.boxtel.local",
      "clusterBrowseUrl" : "http://clusterbrowse-ota.boxtel.local",
      "bootstrapServers" : [ ],
      "uid" : "543c3b7d55634eba83b1472775c131c4",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "cluster" : {
          "href" : "...",
          "title" : "A cluster"
        }
      }
    }, {
      "name" : "Best Cluster PROD",
      "description" : "",
      "location" : "Best",
      "billingCloudEnabled" : true,
      "apiUrl" : "http://clusterapi-prod.boxtel.local",
      "clusterBrowseUrl" : "http://clusterbrowse-prod.boxtel.local",
      "bootstrapServers" : [ ],
      "uid" : "db0766d053ca46d59b0a1af2817c535a",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "cluster" : {
          "href" : "...",
          "title" : "A cluster"
        }
      }
    }, {
      "name" : "Boxtel Cluster PROD",
      "description" : "",
      "location" : "Boxtel",
      "billingCloudEnabled" : true,
      "apiUrl" : "http://clusterapi-prod.boxtel.local",
      "clusterBrowseUrl" : "http://clusterbrowse-prod.boxtel.local",
      "bootstrapServers" : [ {
        "bootstrapServer" : "bootstrapserver3:9093"
      }, {
        "bootstrapServer" : "bootstrapserver2:9093"
      }, {
        "bootstrapServer" : "bootstrapserver1:9093"
      } ],
      "uid" : "e57ec8be6e2845fbb14b074ce5752782",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "cluster" : {
          "href" : "...",
          "title" : "A cluster"
        }
      }
    }, {
      "name" : "Best Cluster LST",
      "description" : "",
      "location" : "Best",
      "billingCloudEnabled" : false,
      "apiUrl" : "http://clusterapi-lst.best.local",
      "clusterBrowseUrl" : "http://clusterbrowse-lst.best.local",
      "bootstrapServers" : [ ],
      "uid" : "f2e75fe2226745bea34ea9f56621f78f",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "cluster" : {
          "href" : "...",
          "title" : "A cluster"
        }
      }
    }, {
      "name" : "Boxtel Cluster LST",
      "description" : "",
      "location" : "Boxtel",
      "billingCloudEnabled" : false,
      "apiUrl" : "http://clusterapi-lst.boxtel.local",
      "clusterBrowseUrl" : "http://clusterbrowse-lst.boxtel.local",
      "bootstrapServers" : [ ],
      "uid" : "5fe719191cd44798ab70322830800dbc",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "cluster" : {
          "href" : "...",
          "title" : "A cluster"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 6,
    "totalPages" : 1,
    "number" : 0
  }
}

Create a cluster

A POST request is used to create a Cluster.

Request fields

Path Type Description Constraints

name

String

The name of the cluster. Must be unique.

Must match the regular expression (?i)^[a-z0-9\.\-_ ]+$. Must not be empty. Size must be between 3 and 50 inclusive

description

String

A short text summarizing the purpose of the cluster.

Size must be between 0 and 200 inclusive

location

String

The data center or geographic name where this cluster is located.

Size must be between 0 and 50 inclusive

apiUrl

String

URL of Cluster API. This will be used to manage the cluster from Axual API.

Must be a well-formed URL. Size must be between 0 and 255 inclusive

clusterBrowseUrl

String

URL of Cluster Browse. This will be used to browse the cluster from Axual API.

Must be a well-formed URL. Size must be between 0 and 255 inclusive

bootstrapServers

Array

Bootstrap servers URL’s of the cluster.

Must not be empty

Curl request

$ curl 'http://api.example.com/clusters' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "name" : "Test Cluster ACC",
  "description" : "Test cluster for ACC in Best DC",
  "location" : "Best",
  "apiUrl" : "http://testcluster.acc.best.local",
  "clusterBrowseUrl" : "http://testclusterbrowse.acc.best.local:9999",
  "bootstrapServers" : [ {
    "bootstrapServer" : "bootstrapserver1:9092"
  }, {
    "bootstrapServer" : "bootstrapserver2:9092"
  } ]
}'

HTTP request

POST /clusters HTTP/1.1
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Content-Length: 367
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "name" : "Test Cluster ACC",
  "description" : "Test cluster for ACC in Best DC",
  "location" : "Best",
  "apiUrl" : "http://testcluster.acc.best.local",
  "clusterBrowseUrl" : "http://testclusterbrowse.acc.best.local:9999",
  "bootstrapServers" : [ {
    "bootstrapServer" : "bootstrapserver1:9092"
  }, {
    "bootstrapServer" : "bootstrapserver2:9092"
  } ]
}

HTTP response

HTTP/1.1 201 Created
ETag: "0"
Location: http://api.example.com/clusters/d03e36f20dc4493bb75d0aad0e8f91ff
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 633

{
  "name" : "Test Cluster ACC",
  "description" : "Test cluster for ACC in Best DC",
  "location" : "Best",
  "billingCloudEnabled" : null,
  "apiUrl" : "http://testcluster.acc.best.local",
  "clusterBrowseUrl" : "http://testclusterbrowse.acc.best.local:9999",
  "bootstrapServers" : [ {
    "bootstrapServer" : "bootstrapserver2:9092"
  }, {
    "bootstrapServer" : "bootstrapserver1:9092"
  } ],
  "uid" : "d03e36f20dc4493bb75d0aad0e8f91ff",
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "cluster" : {
      "href" : "...",
      "title" : "A cluster"
    }
  }
}

Retrieve a cluster

The clusters/{id} resource is used to retrieve, update and delete individual Clusters.

A GET request will retrieve the details of a Cluster.

Curl request

$ curl 'http://api.example.com/clusters/66c12e25ab06458eac988f0d700fbe81' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'

HTTP request

GET /clusters/66c12e25ab06458eac988f0d700fbe81 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token

HTTP response

HTTP/1.1 200 OK
Content-Length: 537
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8

{
  "name" : "Best Cluster OTA",
  "description" : "",
  "location" : "Best",
  "billingCloudEnabled" : true,
  "apiUrl" : "http://clusterapi-ota.best.local",
  "clusterBrowseUrl" : "http://clusterbrowse-ota.best.local",
  "bootstrapServers" : [ {
    "bootstrapServer" : "bootstrapserver1:9093"
  } ],
  "uid" : "66c12e25ab06458eac988f0d700fbe81",
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "cluster" : {
      "href" : "...",
      "title" : "A cluster"
    }
  }
}

Update an cluster

A PATCH request is used to update a cluster.

To leave an attribute of an instance unchanged, any of the above may be omitted from the request.

$ curl 'http://api.example.com/clusters/66c12e25ab06458eac988f0d700fbe81' -i -X PATCH \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "description" : "modified description"
}'
PATCH /clusters/66c12e25ab06458eac988f0d700fbe81 HTTP/1.1
Content-Length: 44
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "description" : "modified description"
}
HTTP/1.1 204 No Content
ETag: "0"

Cluster search endpoints

/clusters/search/findByName

Search for a cluster by exact name.

Parameter Description

name

Cluster name to search for.

GET /clusters/search/findByName?name=Best+Cluster+LST HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 484
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8

{
  "name" : "Best Cluster LST",
  "description" : "",
  "location" : "Best",
  "billingCloudEnabled" : false,
  "apiUrl" : "http://clusterapi-lst.best.local",
  "clusterBrowseUrl" : "http://clusterbrowse-lst.best.local",
  "bootstrapServers" : [ ],
  "uid" : "f2e75fe2226745bea34ea9f56621f78f",
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "cluster" : {
      "href" : "...",
      "title" : "A cluster"
    }
  }
}

/clusters/search/findByNameContaining

Search for a cluster by name containing search term.

Parameter Description

name

Term to search within cluster name.

GET /clusters/search/findByNameContaining?name=best HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 2010

{
  "_embedded" : {
    "clusters" : [ {
      "name" : "Best Cluster OTA",
      "description" : "",
      "location" : "Best",
      "billingCloudEnabled" : true,
      "apiUrl" : "http://clusterapi-ota.best.local",
      "clusterBrowseUrl" : "http://clusterbrowse-ota.best.local",
      "bootstrapServers" : [ {
        "bootstrapServer" : "bootstrapserver1:9093"
      } ],
      "uid" : "66c12e25ab06458eac988f0d700fbe81",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "cluster" : {
          "href" : "...",
          "title" : "A cluster"
        }
      }
    }, {
      "name" : "Best Cluster PROD",
      "description" : "",
      "location" : "Best",
      "billingCloudEnabled" : true,
      "apiUrl" : "http://clusterapi-prod.boxtel.local",
      "clusterBrowseUrl" : "http://clusterbrowse-prod.boxtel.local",
      "bootstrapServers" : [ ],
      "uid" : "db0766d053ca46d59b0a1af2817c535a",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "cluster" : {
          "href" : "...",
          "title" : "A cluster"
        }
      }
    }, {
      "name" : "Best Cluster LST",
      "description" : "",
      "location" : "Best",
      "billingCloudEnabled" : false,
      "apiUrl" : "http://clusterapi-lst.best.local",
      "clusterBrowseUrl" : "http://clusterbrowse-lst.best.local",
      "bootstrapServers" : [ ],
      "uid" : "f2e75fe2226745bea34ea9f56621f78f",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "cluster" : {
          "href" : "...",
          "title" : "A cluster"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 3,
    "totalPages" : 1,
    "number" : 0
  }
}

Tenants

Tenant represents an individual customer of Axual Event Bus (AEB). A tenant can have multiple environments that map to a particular instance of AEB. Tenant can also have multiple Streams on multiple Environments on a particular instance of AEB.

Tenants are never visible to a tenant user. Currently logged in user can see basic information like name and logo of his own tenant.

The tenants collection resource is used to create and list tenants.

Tenant schema

The tenants resource uses the following json-schema:

GET /profile/tenants HTTP/1.1
Accept: application/schema+json
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/schema+json;charset=UTF-8
Content-Length: 1856

{
  "title" : "Tenant",
  "properties" : {
    "partitions" : {
      "title" : "Partitions",
      "readOnly" : false,
      "type" : "integer"
    },
    "issuerUrl" : {
      "title" : "Issuer url",
      "readOnly" : false,
      "type" : "string"
    },
    "dataClassificationEnabled" : {
      "title" : "Data classification enabled",
      "readOnly" : false,
      "type" : "boolean"
    },
    "created_at" : {
      "title" : "Created at",
      "readOnly" : true,
      "type" : "string",
      "format" : "date-time"
    },
    "retentionTime" : {
      "title" : "Retention time",
      "readOnly" : false,
      "type" : "integer"
    },
    "created_by" : {
      "title" : "Created by",
      "readOnly" : true,
      "type" : "string"
    },
    "uid" : {
      "title" : "Uid",
      "readOnly" : true,
      "type" : "string"
    },
    "contact" : {
      "title" : "Contact",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "name" : {
      "title" : "Name",
      "readOnly" : false,
      "type" : "string"
    },
    "featureConfig" : {
      "title" : "Feature config",
      "readOnly" : false,
      "type" : "string"
    },
    "modified_by" : {
      "title" : "Modified by",
      "readOnly" : false,
      "type" : "string"
    },
    "logo" : {
      "title" : "Logo",
      "readOnly" : false,
      "type" : "string"
    },
    "shortName" : {
      "title" : "Short name",
      "readOnly" : false,
      "type" : "string"
    },
    "modified_at" : {
      "title" : "Modified at",
      "readOnly" : false,
      "type" : "string",
      "format" : "date-time"
    },
    "properties" : {
      "title" : "Properties",
      "readOnly" : false,
      "type" : "object"
    }
  },
  "definitions" : { },
  "type" : "object",
  "$schema" : "http://json-schema.org/draft-04/schema#"
}

List all tenants

A GET request lists all tenants in the system. This operation can be done by an Axual admin only.

Curl request

$ curl 'http://api.example.com/tenants' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /tenants HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1658

{
  "_embedded" : {
    "tenants" : [ {
      "properties" : {
        "replication.factor" : "1",
        "cleanup.policy" : "delete",
        "min.insync.replicas" : "1",
        "segment.ms" : "86400000"
      },
      "name" : "Rabobank",
      "shortName" : "rabo",
      "logo" : "rabo.png",
      "issuerUrl" : "http://api.example.com/auth/realms/rabobank",
      "dataClassificationEnabled" : false,
      "featureConfig" : null,
      "retentionTime" : 604800000,
      "partitions" : 12,
      "uid" : "55ef719629a94a07b9bf8ac0f3c495e5",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "contact" : {
          "href" : "...",
          "templated" : true,
          "title" : "Business contact of this tenant"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}

Create tenant

A POST request is used to create a new tenant. This operation can be done by an Axual admin only.

Request fields

Path Type Description Constraints

name

String

Full name of the tenant

Must match the regular expression (?i)^[a-z0-9\.\-_ ]+$. Must not be empty. Size must be between 3 and 50 inclusive

shortName

String

Short name of the tenant

Must match the regular expression (?i)^[a-z0-9]+$. Must not be empty. Size must be between 3 and 12 inclusive

domain

String

Supported domain of this tenant

properties

Object

A list of Tenant specific variables in Key,Value format.

retentionTime

Number

The time in milliseconds after which the messages can be deleted from all streams. This is an optional field. If not specified, default value is 7 days (604800000).

Must be at least 1000. Must be at most 160704000000

partitions

Number

Defines the number of partitions configured for every stream of this tenant. This is an optional field. If not specified, default value is 12

Must be at least 1. Must be at most 120000

Curl request

$ curl 'http://api.example.com/tenants' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "name" : "Test Tenant",
  "shortName" : "test",
  "domain" : "testtenant.nl",
  "retentionTime" : 50000,
  "partitions" : 12
}'

HTTP request

POST /tenants HTTP/1.1
Content-Length: 130
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "name" : "Test Tenant",
  "shortName" : "test",
  "domain" : "testtenant.nl",
  "retentionTime" : 50000,
  "partitions" : 12
}

HTTP response

HTTP/1.1 201 Created
Location: http://api.example.com/tenants/07685bcb0933437893bcef3eeea7879b
Content-Length: 1011
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Last-Modified: Thu, 22 Apr 2021 14:34:29 GMT

{
  "properties" : {
    "replication.factor" : "1",
    "cleanup.policy" : "delete",
    "min.insync.replicas" : "1",
    "segment.ms" : "86400000"
  },
  "name" : "Test Tenant",
  "shortName" : "test",
  "logo" : null,
  "issuerUrl" : null,
  "dataClassificationEnabled" : false,
  "featureConfig" : null,
  "retentionTime" : 50000,
  "partitions" : 12,
  "uid" : "07685bcb0933437893bcef3eeea7879b",
  "created_at" : "2021-04-22T14:34:29.620201",
  "modified_at" : "2021-04-22T14:34:29.620201",
  "created_by" : "superadmin@supertesttenant.nl",
  "modified_by" : "superadmin@supertesttenant.nl",
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "tenant" : {
      "href" : "...",
      "title" : "A tenant"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "contact" : {
      "href" : "...",
      "templated" : true,
      "title" : "Business contact of this tenant"
    }
  }
}

Retrieve a tenant

The tenants/{id} item resource is used to retrieve, update and delete individual tenants.

A GET request will retrieve the details of a Tenant.

If, inside the details of a Tenant, is display _embeddeb property, it means the contact for the current Tenant is not yet set. Otherwise, if it is present, the _embeddeb property contains all the user detail of the contact.

At the bottom of the details of a Tenant there are links that point directly to the User detail page of contact, if it is set already, otherwise the link point to 'ResourceNotFound'.

Curl request

$ curl 'http://api.example.com/tenants/55ef719629a94a07b9bf8ac0f3c495e5' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /tenants/55ef719629a94a07b9bf8ac0f3c495e5 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Length: 999
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "properties" : {
    "replication.factor" : "1",
    "cleanup.policy" : "delete",
    "min.insync.replicas" : "1",
    "segment.ms" : "86400000"
  },
  "name" : "Rabobank",
  "shortName" : "rabo",
  "logo" : "rabo.png",
  "issuerUrl" : "http://api.example.com/auth/realms/rabobank",
  "dataClassificationEnabled" : false,
  "featureConfig" : null,
  "retentionTime" : 604800000,
  "partitions" : 12,
  "uid" : "55ef719629a94a07b9bf8ac0f3c495e5",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "tenant" : {
      "href" : "...",
      "title" : "A tenant"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "contact" : {
      "href" : "...",
      "templated" : true,
      "title" : "Business contact of this tenant"
    }
  }
}
Relation Description

edit

Existence of this link indicates that the currently authenticated user can edit this Tenant

Update a tenant

A PATCH request is used to update a tenant. Only an Axual admin can perform this action.

$ curl 'http://api.example.com/tenants/55ef719629a94a07b9bf8ac0f3c495e5' -i -X PATCH \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "featureConfig" : "{\n  \"userLimit\": 2,\n  \"group\":1\n}"
}'
PATCH /tenants/55ef719629a94a07b9bf8ac0f3c495e5 HTTP/1.1
Content-Length: 66
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "featureConfig" : "{\n  \"userLimit\": 2,\n  \"group\":1\n}"
}
HTTP/1.1 204 No Content
ETag: "0"
Last-Modified: Thu, 7 Jun 2018 23:16:23 GMT

Search endpoints

/tenants/search/findByName

Search for a tenant by exact name.

Parameter Description

name

Tenant name to search for.

GET /tenants/search/findByName?name=Rabobank HTTP/1.1
realm: rabo
realm: rabo
Authorization: Bearer token
Authorization: Bearer something
Host: api.example.com
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1314

{
  "_embedded" : {
    "tenants" : [ {
      "properties" : {
        "replication.factor" : "1",
        "cleanup.policy" : "delete",
        "min.insync.replicas" : "1",
        "segment.ms" : "86400000"
      },
      "name" : "Rabobank",
      "shortName" : "rabo",
      "logo" : "rabo.png",
      "issuerUrl" : "http://api.example.com/auth/realms/rabobank",
      "dataClassificationEnabled" : false,
      "featureConfig" : null,
      "retentionTime" : 604800000,
      "partitions" : 12,
      "uid" : "55ef719629a94a07b9bf8ac0f3c495e5",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "contact" : {
          "href" : "...",
          "templated" : true,
          "title" : "Business contact of this tenant"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

/tenants/search/findByNameContaining

Search for a tenant by name containing search term.

Parameter Description

name

Term to search for within tenant name.

GET /tenants/search/findByNameContaining?name=Rabobank HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1413

{
  "_embedded" : {
    "tenants" : [ {
      "properties" : {
        "replication.factor" : "1",
        "cleanup.policy" : "delete",
        "min.insync.replicas" : "1",
        "segment.ms" : "86400000"
      },
      "name" : "Rabobank",
      "shortName" : "rabo",
      "logo" : "rabo.png",
      "issuerUrl" : "http://api.example.com/auth/realms/rabobank",
      "dataClassificationEnabled" : false,
      "featureConfig" : null,
      "retentionTime" : 604800000,
      "partitions" : 12,
      "uid" : "55ef719629a94a07b9bf8ac0f3c495e5",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "contact" : {
          "href" : "...",
          "templated" : true,
          "title" : "Business contact of this tenant"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}

/tenants/search/findByShortName

Search for a tenant by exact short name.

Parameter Description

shortName

Tenant short name to search for.

GET /tenants/search/findByShortName?shortName=rabo HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1314

{
  "_embedded" : {
    "tenants" : [ {
      "properties" : {
        "replication.factor" : "1",
        "cleanup.policy" : "delete",
        "min.insync.replicas" : "1",
        "segment.ms" : "86400000"
      },
      "name" : "Rabobank",
      "shortName" : "rabo",
      "logo" : "rabo.png",
      "issuerUrl" : "http://api.example.com/auth/realms/rabobank",
      "dataClassificationEnabled" : false,
      "featureConfig" : null,
      "retentionTime" : 604800000,
      "partitions" : 12,
      "uid" : "55ef719629a94a07b9bf8ac0f3c495e5",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "tenant" : {
          "href" : "...",
          "title" : "A tenant"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "contact" : {
          "href" : "...",
          "templated" : true,
          "title" : "Business contact of this tenant"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

Confidentialities

Defines the available confidentiality level for a tenant.

As an example following can be the confidentiality levels: - C=0: Public. - C=1: Internal use. - C=2: Confidential. - C=3: Secret.

These levels can then be associated to the streams for the tenant. The purpose of this is to define how confidential the messages on the stream are.

List all confidentiality

A GET request lists all tenants in the system. This operation can be done by any authenticated user for the tenant.

Curl request

$ curl 'http://api.example.com/confidentialities' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /confidentialities HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Length: 2030
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "confidentialities" : [ {
      "level" : "L1",
      "color" : "blue",
      "description" : "test confidentiality",
      "uid" : "347ab08009fe4da8be6905b55552ab52",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "delete" : {
          "href" : "...",
          "title" : "Indication that this entity can be deleted"
        }
      }
    }, {
      "level" : "L2",
      "color" : "blue",
      "description" : "L2 confidentiality",
      "uid" : "648ab08009fe4da8be6905b55552ac43",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "delete" : {
          "href" : "...",
          "title" : "Indication that this entity can be deleted"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    },
    "create" : {
      "href" : "...",
      "templated" : true,
      "title" : "Indication that an entity can be created"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 0
  }
}

Create confidentiality

A POST request is used to create a new confidentiality level. This operation can be done by a TENANT_ADMIN only.

Request fields

Path Type Description Constraints

level

String

The name of the level

Size must be between 0 and 50 inclusive

description

String

The description of the level.

Size must be between 0 and 200 inclusive

color

String

The colour of the level.

Size must be between 0 and 12 inclusive

Curl request

$ curl 'http://api.example.com/confidentialities' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "level" : "L2",
  "description" : "This is Level 2",
  "color" : "blue"
}'

HTTP request

POST /confidentialities HTTP/1.1
Content-Length: 77
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "level" : "L2",
  "description" : "This is Level 2",
  "color" : "blue"
}

HTTP response

HTTP/1.1 201 Created
Content-Length: 770
ETag: "0"
Location: http://api.example.com/confidentialities/635b10d1c33c456b8ab1479f69980ef6
Content-Type: application/hal+json;charset=UTF-8
Last-Modified: Thu, 22 Apr 2021 14:34:28 GMT

{
  "level" : "l2",
  "description" : "This is Level 2",
  "color" : "blue",
  "uid" : "635b10d1c33c456b8ab1479f69980ef6",
  "created_at" : "2021-04-22T14:34:28.822423",
  "modified_at" : "2021-04-22T14:34:28.822423",
  "created_by" : "tenadmin@rabobank.nl",
  "modified_by" : "tenadmin@rabobank.nl",
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "confidentiality" : {
      "href" : "...",
      "templated" : true,
      "title" : "The confidentiality configured for the object"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    }
  }
}

Retrieve confidentiality

The confidentiality/{id} item resource is used to retrieve, update and delete individual confidentiality level.

A GET request will retrieve the details of a Confidentiality level. This operation can be done by any authenticated user for the tenant.

Curl request

$ curl 'http://api.example.com/confidentialities/347ab08009fe4da8be6905b55552ab52' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /confidentialities/347ab08009fe4da8be6905b55552ab52 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 733
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "level" : "L1",
  "description" : "test confidentiality",
  "color" : "blue",
  "uid" : "347ab08009fe4da8be6905b55552ab52",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "confidentiality" : {
      "href" : "...",
      "templated" : true,
      "title" : "The confidentiality configured for the object"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    }
  }
}
Relation Description

edit

Existence of this link indicates that the currently authenticated user can edit this Confidentiality level

delete

Existence of this link indicates that the currently authenticated user can delete this confidentiality level

Update confidentiality

A PATCH request is used to update a tenant. Only a TENANT_ADMIN can perform this action.

$ curl 'http://api.example.com/confidentialities/347ab08009fe4da8be6905b55552ab52' -i -X PATCH \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "description" : "Updated description"
}'
PATCH /confidentialities/347ab08009fe4da8be6905b55552ab52 HTTP/1.1
Content-Length: 43
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "description" : "Updated description"
}
HTTP/1.1 200 OK
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 732
Last-Modified: Thu, 7 Jun 2018 23:16:23 GMT

{
  "level" : "L1",
  "description" : "Updated description",
  "color" : "blue",
  "uid" : "347ab08009fe4da8be6905b55552ab52",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "confidentiality" : {
      "href" : "...",
      "templated" : true,
      "title" : "The confidentiality configured for the object"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    }
  }
}

Delete confidentiality

Deleting confidentiality is a two step process a GET request to check the constraints followed by the DELETE request

Delete confidentiality constraints

A GET request is used to get the constraints for deleting Confidentiality. Only a TENANT_ADMIN can perform this

$ curl 'http://api.example.com/confidentialities/648ab08009fe4da8be6905b55552ac43/deletion-constraints' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
GET /confidentialities/648ab08009fe4da8be6905b55552ac43/deletion-constraints HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 47

{
  "canDelete" : false,
  "streamsCount" : 1
}

Delete confidentiality

A DELETE request is used to delete a Confidentiality. Only a TENANT_ADMIN can perform this

$ curl 'http://api.example.com/confidentialities/347ab08009fe4da8be6905b55552ab52' -i -X DELETE \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN'
DELETE /confidentialities/347ab08009fe4da8be6905b55552ab52 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN
HTTP/1.1 204 No Content

Integrities

Define the available integrity level for a tenant. These levels can then be associated to the streams for the tenant.

List all integrity

A GET request will list all the integrities in the system. This operation can be done by a TENANT_ADMIN only.

Curl request

$ curl 'http://api.example.com/integrities' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /integrities HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1995

{
  "_embedded" : {
    "integrities" : [ {
      "level" : "L1",
      "color" : "green",
      "description" : "This is level 1",
      "uid" : "247ab08159fe4da8be6905b55552ab52",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "delete" : {
          "href" : "...",
          "title" : "Indication that this entity can be deleted"
        }
      }
    }, {
      "level" : "L2",
      "color" : "yellow",
      "description" : "This is level 2",
      "uid" : "247ab03ffafe4da2bet905b5e352ab53",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "delete" : {
          "href" : "...",
          "title" : "Indication that this entity can be deleted"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    },
    "create" : {
      "href" : "...",
      "templated" : true,
      "title" : "Indication that an entity can be created"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 0
  }
}
Relation Description

create

Existence of this link indicates thatthe currently authenticated user can create Integrity level

Create integrity

A POST request is used to create a new integrity level. This operation can be done by a TENANT_ADMIN only.

Below table lists all possible fields that can be provided for integrity level creation.

Request fields

Path Type Description Constraints

level

String

The level of the integrity level

Size must be between 0 and 50 inclusive

description

String

The description of the integrity level

Size must be between 0 and 200 inclusive

color

String

The color of the integrity level

Size must be between 0 and 12 inclusive

Curl request

$ curl 'http://api.example.com/integrities' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "level" : "Level 1",
  "description" : "This is level 1",
  "color" : "green"
}'

HTTP request

POST /integrities HTTP/1.1
realm: rabo
Content-Length: 83
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "level" : "Level 1",
  "description" : "This is level 1",
  "color" : "green"
}

HTTP response

HTTP/1.1 201 Created
Location: http://api.example.com/integrities/19ceaf7314b3491193ea3afce910203d
ETag: "0"
Last-Modified: Thu, 22 Apr 2021 14:34:30 GMT
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 764

{
  "level" : "level 1",
  "description" : "This is level 1",
  "color" : "green",
  "uid" : "19ceaf7314b3491193ea3afce910203d",
  "created_at" : "2021-04-22T14:34:30.181107",
  "modified_at" : "2021-04-22T14:34:30.181107",
  "created_by" : "tenadmin@rabobank.nl",
  "modified_by" : "tenadmin@rabobank.nl",
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "integrity" : {
      "href" : "...",
      "templated" : true,
      "title" : "The integrity configured for the object"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    }
  }
}

Retrieve an integrity

The integrity/{id} item resource is used to retrieve, update and delete individual integrity level.

A GET request will retrieve the details of an integrity.

Curl request

$ curl 'http://api.example.com/integrities/247ab08159fe4da8be6905b55552ab52' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /integrities/247ab08159fe4da8be6905b55552ab52 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Length: 717
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "level" : "L1",
  "description" : "This is level 1",
  "color" : "green",
  "uid" : "247ab08159fe4da8be6905b55552ab52",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "integrity" : {
      "href" : "...",
      "templated" : true,
      "title" : "The integrity configured for the object"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    }
  }
}
Relation Description

edit

Existence of this link indicates thatthe currently authenticated user can edit this Integrity level

delete

Existence of this link indicates that the currently authenticated user can delete this Integrity level

Update an integrity

A PATCH request is used to update an integrity. Only a TENANT_ADMIN can perform this action.

$ curl 'http://api.example.com/integrities/247ab08159fe4da8be6905b55552ab52' -i -X PATCH \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "description" : "Updated description",
  "color" : "purple",
  "level" : "level-one"
}'
PATCH /integrities/247ab08159fe4da8be6905b55552ab52 HTTP/1.1
realm: rabo
Host: api.example.com
Content-Length: 90
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "description" : "Updated description",
  "color" : "purple",
  "level" : "level-one"
}
HTTP/1.1 200 OK
Content-Length: 729
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Last-Modified: Thu, 7 Jun 2018 23:16:23 GMT

{
  "level" : "level-one",
  "description" : "Updated description",
  "color" : "purple",
  "uid" : "247ab08159fe4da8be6905b55552ab52",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "integrity" : {
      "href" : "...",
      "templated" : true,
      "title" : "The integrity configured for the object"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    }
  }
}

Delete integrity endpoints

Deleting integrity is a two step process, a GET request to check the constraints followed by the DELETE request. This operation can be done by a TENANT_ADMIN only.

Delete integrity constraints

A GET request is used to get the constraints for deleting integrities.

$ curl 'http://api.example.com/integrities/247ab03ffafe4da2bet905b5e352ab53/deletion-constraints' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
GET /integrities/247ab03ffafe4da2bet905b5e352ab53/deletion-constraints HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 47

{
  "canDelete" : false,
  "streamsCount" : 1
}

Delete integrity

A DELETE request is used to delete a integrity.

$ curl 'http://api.example.com/integrities/247ab08159fe4da8be6905b55552ab52' -i -X DELETE \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN'
DELETE /integrities/247ab08159fe4da8be6905b55552ab52 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN
HTTP/1.1 204 No Content

ConnectPlugins

A ConnectPlugin stores the plugin class, type, version, and optional config explanation available for an Instance.

The /connect_plugins resource is used to list connect plugins.

List all connect plugins

A GET request will list all the connect plugins available to the currently logged in user.

Curl request

$ curl 'http://api.example.com/connect_plugins' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'

HTTP request

GET /connect_plugins HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 3430

{
  "_embedded" : {
    "connect_plugins" : [ {
      "instance" : {
        "tenant" : {
          "shortName" : "rabo",
          "_links" : {
            "self" : {
              "href" : "...",
              "title" : "URI pointing to current request"
            },
            "contact" : {
              "href" : "...",
              "templated" : true,
              "title" : "Business contact of this tenant"
            }
          }
        },
        "_links" : {
          "self" : {
            "href" : "...",
            "templated" : true,
            "title" : "URI pointing to current request"
          },
          "supportTier" : {
            "href" : "...",
            "templated" : true
          }
        }
      },
      "pluginClass" : "io.axual.test.sink.plugin",
      "pluginType" : "SINK",
      "pluginVersion" : "1.0.0",
      "pluginConfigs" : [ {
        "name" : "transforms",
        "type" : "LIST"
      }, {
        "name" : "key.converter",
        "type" : "CLASS"
      }, {
        "name" : "tasks.max",
        "type" : "INT"
      }, {
        "name" : "logger.name",
        "type" : "STRING"
      }, {
        "name" : "connector.class",
        "type" : "STRING"
      }, {
        "name" : "name",
        "type" : "STRING"
      } ],
      "uid" : "197691609c2fe4f129cfc79f18d5d1269",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "connectPluginInfo" : {
          "href" : "...",
          "templated" : true
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        }
      }
    }, {
      "instance" : {
        "tenant" : {
          "shortName" : "rabo",
          "_links" : {
            "self" : {
              "href" : "...",
              "title" : "URI pointing to current request"
            },
            "contact" : {
              "href" : "...",
              "templated" : true,
              "title" : "Business contact of this tenant"
            }
          }
        },
        "_links" : {
          "self" : {
            "href" : "...",
            "templated" : true,
            "title" : "URI pointing to current request"
          },
          "supportTier" : {
            "href" : "...",
            "templated" : true
          }
        }
      },
      "pluginClass" : "io.axual.test.source.plugin",
      "pluginType" : "SOURCE",
      "pluginVersion" : "1.0.0",
      "pluginConfigs" : [ ],
      "uid" : "427691609c2f20f129bd179f45d5d1269",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "connectPluginInfo" : {
          "href" : "...",
          "templated" : true
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 0
  }
}

List all environments relevant for an application

A GET request will list all the environments that are relevant for the application with the status of connector on those environments . Only the environments that support the application’s configured pluginClass and are accessible to the user are returned.

Curl request

$ curl 'http://api.example.com/connect_plugins/search/findEnvironmentsByApplication?application=http%3A%2F%2Flocalhost%2Fapplications%2Fdbc9e4670h1c4866deg78722e2930d2g' -i -X GET \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /connect_plugins/search/findEnvironmentsByApplication?application=http%3A%2F%2Flocalhost%2Fapplications%2Fdbc9e4670h1c4866deg78722e2930d2g HTTP/1.1
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Length: 4209
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "environmentWithStatuses" : [ {
      "status" : "Undefined",
      "_embedded" : {
        "environment" : {
          "name" : "raboenv2",
          "shortName" : "raboenv2",
          "visibility" : "public",
          "color" : null,
          "description" : "environment",
          "uid" : "e11ee2dd976647109ca904dd8adc050f",
          "_links" : {
            "self" : {
              "href" : "...",
              "title" : "URI pointing to current request"
            },
            "environment" : {
              "href" : "...",
              "templated" : true,
              "title" : "An environment"
            },
            "instance" : {
              "href" : "...",
              "templated" : true,
              "title" : "An instance"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "application" : {
          "type" : "SINK",
          "shortName" : "rabo_app6",
          "visibility" : "public",
          "owners" : {
            "name" : "Application-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "description" : null,
          "uid" : "dbc9e4670h1c4866deg78722e2930d2g",
          "_links" : {
            "self" : {
              "href" : "...",
              "title" : "URI pointing to current request"
            },
            "application" : {
              "href" : "...",
              "templated" : true,
              "title" : "An application"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        }
      }
    }, {
      "status" : "Undefined",
      "_embedded" : {
        "environment" : {
          "name" : "raboenv1",
          "shortName" : "raboenv1",
          "visibility" : "public",
          "color" : null,
          "description" : "environment",
          "uid" : "047ab08009fe4da8be6905b55552ab52",
          "_links" : {
            "self" : {
              "href" : "...",
              "title" : "URI pointing to current request"
            },
            "environment" : {
              "href" : "...",
              "templated" : true,
              "title" : "An environment"
            },
            "instance" : {
              "href" : "...",
              "templated" : true,
              "title" : "An instance"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "application" : {
          "type" : "SINK",
          "shortName" : "rabo_app6",
          "visibility" : "public",
          "owners" : {
            "name" : "Application-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "description" : null,
          "uid" : "dbc9e4670h1c4866deg78722e2930d2g",
          "_links" : {
            "self" : {
              "href" : "...",
              "title" : "URI pointing to current request"
            },
            "application" : {
              "href" : "...",
              "templated" : true,
              "title" : "An application"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

Environments

An Environment represents a functional group of servers that is specific to a Tenant. It is usually grouped based on functional use e.g. System testing, Acceptance testing, Production and others.

Every environment must be linked to an existing Instance before it can be considered ready for business use. This can only be done by an Axual admin user.

The environments collection resource is used to create and list Environments.

Environment Schema

The environments resource uses the following json-schema:

GET /profile/environments HTTP/1.1
Accept: application/schema+json
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 2269
Content-Type: application/schema+json;charset=UTF-8

{
  "title" : "Environment",
  "properties" : {
    "partitions" : {
      "title" : "Partitions",
      "readOnly" : false,
      "type" : "integer"
    },
    "authorizationIssuer" : {
      "title" : "Authorization issuer",
      "readOnly" : false,
      "type" : "string",
      "enum" : [ "Stream owner", "Auto" ]
    },
    "private" : {
      "title" : "Private",
      "readOnly" : true,
      "type" : "boolean"
    },
    "instance" : {
      "title" : "Instance",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "color" : {
      "title" : "Color",
      "readOnly" : false,
      "type" : "string"
    },
    "visibility" : {
      "title" : "Visibility",
      "readOnly" : false,
      "type" : "string",
      "enum" : [ "public", "private" ]
    },
    "description" : {
      "title" : "Description",
      "readOnly" : false,
      "type" : "string"
    },
    "created_at" : {
      "title" : "Created at",
      "readOnly" : true,
      "type" : "string",
      "format" : "date-time"
    },
    "owners" : {
      "title" : "Owners",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "retentionTime" : {
      "title" : "Retention time",
      "readOnly" : false,
      "type" : "integer"
    },
    "created_by" : {
      "title" : "Created by",
      "readOnly" : true,
      "type" : "string"
    },
    "autoApproved" : {
      "title" : "Auto approved",
      "readOnly" : true,
      "type" : "boolean"
    },
    "uid" : {
      "title" : "Uid",
      "readOnly" : true,
      "type" : "string"
    },
    "name" : {
      "title" : "Name",
      "readOnly" : false,
      "type" : "string"
    },
    "modified_by" : {
      "title" : "Modified by",
      "readOnly" : false,
      "type" : "string"
    },
    "shortName" : {
      "title" : "Short name",
      "readOnly" : false,
      "type" : "string"
    },
    "modified_at" : {
      "title" : "Modified at",
      "readOnly" : false,
      "type" : "string",
      "format" : "date-time"
    },
    "properties" : {
      "title" : "Properties",
      "readOnly" : false,
      "type" : "object"
    }
  },
  "definitions" : { },
  "type" : "object",
  "$schema" : "http://json-schema.org/draft-04/schema#"
}

List all environments

A GET request will list all the environments visible to the currently logged in user.

Curl request

$ curl 'http://api.example.com/environments' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /environments HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 7400

{
  "_embedded" : {
    "environments" : [ {
      "name" : "raboenv1",
      "shortName" : "raboenv1",
      "visibility" : "public",
      "color" : null,
      "description" : "environment",
      "uid" : "047ab08009fe4da8be6905b55552ab52",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "name" : "raboenv2",
      "shortName" : "raboenv2",
      "visibility" : "public",
      "color" : null,
      "description" : "environment",
      "uid" : "e11ee2dd976647109ca904dd8adc050f",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "name" : "raboprivenv1",
      "shortName" : "raboprivenv1",
      "visibility" : "private",
      "color" : null,
      "description" : "environment",
      "uid" : "46cfaf47d2d04d12923beefac3d0ba5a",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "name" : "raboprivenv2",
      "shortName" : "raboprivenv2",
      "visibility" : "private",
      "color" : null,
      "description" : "environment",
      "uid" : "61b1b34b0c6744dcadb85f4c188517e5",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "name" : "raboprivenv3",
      "shortName" : "raboprivenv3",
      "visibility" : "private",
      "color" : null,
      "description" : "environment",
      "uid" : "72c1b34b0c6744dcadb85f4c188518f6",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "name" : "raboprivenv4",
      "shortName" : "raboprivenv4",
      "visibility" : "private",
      "color" : null,
      "description" : "environment",
      "uid" : "83c1b34b0c6744dcadb85f4c188518g5",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "name" : "raboprivenv5",
      "shortName" : "raboprivenv5",
      "visibility" : "private",
      "color" : null,
      "description" : "environment",
      "uid" : "6u2577bclboz97ievex0fv5hvysemooh",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "name" : "raboenv3",
      "shortName" : "raboenv3",
      "visibility" : "public",
      "color" : null,
      "description" : "environment",
      "uid" : "156ab08009fe4da8be6905b55552ab63",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "name" : "envdefault",
      "shortName" : "envdefault",
      "visibility" : "public",
      "color" : null,
      "description" : "environment",
      "uid" : "156ab08009fe4da96e6905b55552ab63",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    },
    "create" : {
      "href" : "...",
      "templated" : true,
      "title" : "Indication that an entity can be created"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 9,
    "totalPages" : 1,
    "number" : 0
  }
}
Relation Description

create

Existence of this link indicates that the currently authenticated user can create a new Environment

Create environment

A POST request is used to create a new environment. The fields authorizationIssuer and visibility are currently optional and can be ignored while creating a new Environment. By default, authorizationIssuer will be set to Stream owner and visibility will be set to Public.

Below table lists all possible fields that can be provided for environment creation.

Request fields

Path Type Description Constraints

name

String

The name of the environment

Must match the regular expression (?i)^[a-z0-9\.\-_ ]+$. Must not be empty. Size must be between 3 and 50 inclusive

shortName

String

The short name of the environment. Used in stream names internally. Must be lower-case.

Must match the regular expression (?i)^[a-z0-9]+$. Must not be empty. Size must be between 3 and 20 inclusive

owners

String

A valid URI of an existing group, must not be null.

Must not be null

description

String

Human-readable text describing the environment

Size must be between 0 and 200 inclusive

properties

Object

A list of Tenant specific variables in Key,Value format.

color

String

A string color value assigned to this environment.

Size must be between 0 and 12 inclusive

authorizationIssuer

String

An entity that authorizes ApplicationAccess on this environment. Possible values are Stream owner and Automatic. Must be Automatic if visibility is Private.

visibility

String

Defines the visibility of this environment. Possible values are Public and Private

instance

String

A valid Instance URI where this environment should be deployed.

retentionTime

Number

The time in milliseconds after which the messages can be deleted from all streams. This is an optional field. If not specified, default value is 7 days (604800000).

Must be at least 1000. Must be at most 160704000000

partitions

Number

Defines the number of partitions configured for every stream of this tenant. This is an optional field. If not specified, default value is 12

Must be at least 1. Must be at most 120000

Curl request

$ curl 'http://api.example.com/environments' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "name" : "KAD Test",
  "shortName" : "kad",
  "description" : "This is KAD test environment",
  "retentionTime" : 90000,
  "partitions" : 8,
  "authorizationIssuer" : "Stream owner",
  "visibility" : "Public",
  "instance" : "http://api.example.com/instances/b9301e9144324928911f7d83ec40c478",
  "owners" : "http://api.example.com/groups/c339c5cf9b5a4f6b8342c6ea2f9b6775",
  "properties" : {
    "stream.integrity" : "2",
    "stream.confidentiality" : "3"
  }
}'

HTTP request

POST /environments HTTP/1.1
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Content-Length: 466
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "name" : "KAD Test",
  "shortName" : "kad",
  "description" : "This is KAD test environment",
  "retentionTime" : 90000,
  "partitions" : 8,
  "authorizationIssuer" : "Stream owner",
  "visibility" : "Public",
  "instance" : "http://api.example.com/instances/b9301e9144324928911f7d83ec40c478",
  "owners" : "http://api.example.com/groups/c339c5cf9b5a4f6b8342c6ea2f9b6775",
  "properties" : {
    "stream.integrity" : "2",
    "stream.confidentiality" : "3"
  }
}

HTTP response

HTTP/1.1 201 Created
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Location: http://api.example.com/environments/5af00a049ba34c3ea4f3c798ccda8476
Content-Length: 3258
Last-Modified: Thu, 22 Apr 2021 14:34:18 GMT

{
  "properties" : {
    "stream.integrity" : "2",
    "stream.confidentiality" : "3"
  },
  "name" : "KAD Test",
  "shortName" : "kad",
  "description" : "This is KAD test environment",
  "color" : null,
  "authorizationIssuer" : "Stream owner",
  "visibility" : null,
  "retentionTime" : 90000,
  "partitions" : 8,
  "private" : false,
  "autoApproved" : false,
  "uid" : "5af00a049ba34c3ea4f3c798ccda8476",
  "created_at" : "2021-04-22T14:34:18.094688",
  "modified_at" : "2021-04-22T14:34:18.094688",
  "created_by" : "poweruser@rabobank.nl",
  "modified_by" : "poweruser@rabobank.nl",
  "_embedded" : {
    "instance" : {
      "name" : "Rabo OTA",
      "instanceClusters" : [ {
        "schemaRegistryUrls" : "https://schema.local3",
        "cluster" : {
          "name" : "Boxtel Cluster OTA",
          "description" : "",
          "location" : "Boxtel",
          "billingCloudEnabled" : true,
          "apiUrl" : "http://clusterapi-ota.boxtel.local",
          "clusterBrowseUrl" : "http://clusterbrowse-ota.boxtel.local",
          "bootstrapServers" : [ ],
          "uid" : "543c3b7d55634eba83b1472775c131c4"
        }
      }, {
        "schemaRegistryUrls" : "https://schema.local1,https://schema.local2",
        "cluster" : {
          "name" : "Best Cluster OTA",
          "description" : "",
          "location" : "Best",
          "billingCloudEnabled" : true,
          "apiUrl" : "http://clusterapi-ota.best.local",
          "clusterBrowseUrl" : "http://clusterbrowse-ota.best.local",
          "bootstrapServers" : [ {
            "bootstrapServer" : "bootstrapserver1:9093"
          } ],
          "uid" : "66c12e25ab06458eac988f0d700fbe81"
        }
      } ],
      "description" : "Rabo OTA Instance",
      "uid" : "b9301e9144324928911f7d83ec40c478",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "supportTier" : {
          "href" : "...",
          "templated" : true
        }
      }
    },
    "owners" : {
      "name" : "Application-raboApplication1",
      "emailAddress" : null,
      "phoneNumber" : null,
      "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "members" : {
          "href" : "...",
          "templated" : true,
          "title" : "Users belonging to this group"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "environment" : {
      "href" : "...",
      "templated" : true,
      "title" : "An environment"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "synchronize" : {
      "href" : "..."
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    },
    "instance" : {
      "href" : "...",
      "templated" : true,
      "title" : "An instance"
    },
    "owners" : {
      "href" : "...",
      "templated" : true,
      "title" : "The group responsible for this object"
    }
  }
}

Retrieve an environment

The environments/{id} resource is used to retrieve, update and delete individual environments.

A GET request will retrieve the details of an environment.

Curl request

$ curl 'http://api.example.com/environments/46cfaf47d2d04d12923beefac3d0ba5a' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP response

HTTP/1.1 200 OK
Content-Length: 3135
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "properties" : { },
  "name" : "raboprivenv1",
  "shortName" : "raboprivenv1",
  "description" : "environment",
  "color" : null,
  "authorizationIssuer" : "Auto",
  "visibility" : "private",
  "retentionTime" : 604800000,
  "partitions" : 12,
  "private" : true,
  "autoApproved" : true,
  "uid" : "46cfaf47d2d04d12923beefac3d0ba5a",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_embedded" : {
    "instance" : {
      "name" : "Rabo OTA",
      "instanceClusters" : [ {
        "schemaRegistryUrls" : "https://schema.local3",
        "cluster" : {
          "name" : "Boxtel Cluster OTA",
          "description" : "",
          "location" : "Boxtel",
          "billingCloudEnabled" : true,
          "apiUrl" : "http://clusterapi-ota.boxtel.local",
          "clusterBrowseUrl" : "http://clusterbrowse-ota.boxtel.local",
          "bootstrapServers" : [ ],
          "uid" : "543c3b7d55634eba83b1472775c131c4"
        }
      }, {
        "schemaRegistryUrls" : "https://schema.local1,https://schema.local2",
        "cluster" : {
          "name" : "Best Cluster OTA",
          "description" : "",
          "location" : "Best",
          "billingCloudEnabled" : true,
          "apiUrl" : "http://clusterapi-ota.best.local",
          "clusterBrowseUrl" : "http://clusterbrowse-ota.best.local",
          "bootstrapServers" : [ {
            "bootstrapServer" : "bootstrapserver1:9093"
          } ],
          "uid" : "66c12e25ab06458eac988f0d700fbe81"
        }
      } ],
      "description" : "Rabo OTA Instance",
      "uid" : "b9301e9144324928911f7d83ec40c478",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "supportTier" : {
          "href" : "...",
          "templated" : true
        }
      }
    },
    "owners" : {
      "name" : "Environment-raboenv1",
      "emailAddress" : null,
      "phoneNumber" : null,
      "uid" : "aac290536035440e9a85f193e4affeb3",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "members" : {
          "href" : "...",
          "templated" : true,
          "title" : "Users belonging to this group"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "environment" : {
      "href" : "...",
      "templated" : true,
      "title" : "An environment"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "synchronize" : {
      "href" : "..."
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    },
    "instance" : {
      "href" : "...",
      "templated" : true,
      "title" : "An instance"
    },
    "owners" : {
      "href" : "...",
      "templated" : true,
      "title" : "The group responsible for this object"
    }
  }
}
Relation Description

instance

The Axual instance this environment is mapped to.

owners

The group of users allowed to access/update the environment.

edit

Existence of this link indicates that the currently authenticated user can edit this Environment

synchronize

Existence of this link indicates that currently authenticated user can synchronize this Environment.

Update an environment

A PATCH request is used to update an environment. In the request, pass only the fields that need changing.

$ curl 'http://api.example.com/environments/46cfaf47d2d04d12923beefac3d0ba5a' -i -X PATCH \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "description" : "Updated description"
}'
PATCH /environments/46cfaf47d2d04d12923beefac3d0ba5a HTTP/1.1
Content-Length: 43
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "description" : "Updated description"
}
HTTP/1.1 204 No Content
ETag: "0"
Last-Modified: Thu, 7 Jun 2018 23:16:23 GMT

Delete environment endpoints

Deleting private environment is a two step process a GET request to check the constraints followed by the DELETE request.

Currently deleting a public environment is not supported.

Delete private environment constraints

A GET request is used to get the constraints for deleting private environments.

$ curl 'http://api.example.com/environments/61b1b34b0c6744dcadb85f4c188517e5/deletion-constraints' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
GET /environments/61b1b34b0c6744dcadb85f4c188517e5/deletion-constraints HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 107

{
  "canDelete" : true,
  "activeGrantsCount" : 0,
  "appPrincipalsCount" : 0,
  "streamConfigsCount" : 0
}

Delete private environment

A DELETE request is used to delete a private environment.

$ curl 'http://api.example.com/environments/61b1b34b0c6744dcadb85f4c188517e5' -i -X DELETE \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN'
DELETE /environments/61b1b34b0c6744dcadb85f4c188517e5 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN
HTTP/1.1 204 No Content

Synchronize an environment

A synchronize operation is defined as the process of (re)-deploying all streams that are linked to this environment on the Kafka clusters. This effectively syncs the configuration stored in the database to every Kafka cluster that is part of this environment.

The operation is similar to instance synchronization except it is performed at environment level.

The process involves identifying streams that have valid configurations (StreamConfig) for this environment and deploying on the cluster.

This is a high-risk operation only allowed for certain roles. Check with your administrator for more details.

A POST request on /environments/uid/synchronize is used to synchronize an environment. When successful, a 204 No content response is returned. Depending on the number of streams that need to be synced, allow at least 30 seconds for the operation to complete.

Curl request

$ curl 'http://api.example.com/environments/047ab08009fe4da8be6905b55552ab52/synchronize' -i -X POST \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN'

HTTP request

POST /environments/047ab08009fe4da8be6905b55552ab52/synchronize HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

HTTP response

HTTP/1.1 204 No Content

Search endpoints

/environments/search/findByName

Search for an environment by exact name.

Parameter Description

name

Environment name to search for.

GET /environments/search/findByName?name=raboenv1 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 908

{
  "_embedded" : {
    "environments" : [ {
      "name" : "raboenv1",
      "shortName" : "raboenv1",
      "visibility" : "public",
      "color" : null,
      "description" : "environment",
      "uid" : "047ab08009fe4da8be6905b55552ab52",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

/environments/search/findByNameContaining

Search for an environment by name containing search term.

Parameter Description

name

Term to search for within environment name.

GET /environments/search/findByNameContaining?name=raboenv1 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1112

{
  "_embedded" : {
    "environments" : [ {
      "name" : "raboenv1",
      "shortName" : "raboenv1",
      "visibility" : "public",
      "color" : null,
      "description" : "environment",
      "uid" : "047ab08009fe4da8be6905b55552ab52",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "create" : {
      "href" : "...",
      "title" : "Indication that an entity can be created"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}

/environments/search/findByShortName

Search for an environment by exact short name.

Parameter Description

shortName

Environment short name to search for.

GET /environments/search/findByShortName?shortName=raboenv1 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 908

{
  "_embedded" : {
    "environments" : [ {
      "name" : "raboenv1",
      "shortName" : "raboenv1",
      "visibility" : "public",
      "color" : null,
      "description" : "environment",
      "uid" : "047ab08009fe4da8be6905b55552ab52",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

/environments/search/findByInstance

Search for environments that are deployed on this instance.

Parameter Description

instance

Find environments mapped to this instance. Must be a valid instance URI.

$ curl 'http://api.example.com/environments/search/findByInstance?instance=http%3A%2F%2Flocalhost%2Finstances%2Fb9301e9144324928911f7d83ec40c478' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
HTTP/1.1 200 OK
Content-Length: 5429
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "environments" : [ {
      "name" : "raboenv1",
      "shortName" : "raboenv1",
      "visibility" : "public",
      "color" : null,
      "description" : "environment",
      "uid" : "047ab08009fe4da8be6905b55552ab52",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "name" : "raboenv2",
      "shortName" : "raboenv2",
      "visibility" : "public",
      "color" : null,
      "description" : "environment",
      "uid" : "e11ee2dd976647109ca904dd8adc050f",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "name" : "raboprivenv1",
      "shortName" : "raboprivenv1",
      "visibility" : "private",
      "color" : null,
      "description" : "environment",
      "uid" : "46cfaf47d2d04d12923beefac3d0ba5a",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "name" : "raboprivenv2",
      "shortName" : "raboprivenv2",
      "visibility" : "private",
      "color" : null,
      "description" : "environment",
      "uid" : "61b1b34b0c6744dcadb85f4c188517e5",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "name" : "raboprivenv3",
      "shortName" : "raboprivenv3",
      "visibility" : "private",
      "color" : null,
      "description" : "environment",
      "uid" : "72c1b34b0c6744dcadb85f4c188518f6",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "name" : "raboprivenv4",
      "shortName" : "raboprivenv4",
      "visibility" : "private",
      "color" : null,
      "description" : "environment",
      "uid" : "83c1b34b0c6744dcadb85f4c188518g5",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "name" : "raboprivenv5",
      "shortName" : "raboprivenv5",
      "visibility" : "private",
      "color" : null,
      "description" : "environment",
      "uid" : "6u2577bclboz97ievex0fv5hvysemooh",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

Applications

An Application is a piece of software that is capable of producing or consuming events from a data stream.

With release of 0.7.5, we have introduced a new field visibility that defines the concept of public and private application.

A public application is visible to every authenticated user within a tenant. A private application, on the other hand, is only visible to the team that owns it. Mostly applications that are created for test purposes and are not intended to be deployed in production are marked as private.

For now, this field is optional with a default value of public, so this field can be ignored while creating a new application.

The /applications resource is used to list and create applications.

Application schema

The applications resource uses the following json-schema:

GET /profile/applications HTTP/1.1
Accept: application/schema+json
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 2283
Content-Type: application/schema+json;charset=UTF-8

{
  "title" : "Application",
  "properties" : {
    "applicationType" : {
      "title" : "Application type",
      "readOnly" : false,
      "type" : "string",
      "enum" : [ "Custom", "Connector" ]
    },
    "visibility" : {
      "title" : "Visibility",
      "readOnly" : false,
      "type" : "string",
      "enum" : [ "public", "private" ]
    },
    "applicationClassVersion" : {
      "title" : "Application class version",
      "readOnly" : false,
      "type" : "string"
    },
    "description" : {
      "title" : "Description",
      "readOnly" : false,
      "type" : "string"
    },
    "created_at" : {
      "title" : "Created at",
      "readOnly" : true,
      "type" : "string",
      "format" : "date-time"
    },
    "owners" : {
      "title" : "Owners",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "type" : {
      "title" : "Type",
      "readOnly" : false,
      "type" : "string"
    },
    "allApplicationIds" : {
      "title" : "All application ids",
      "readOnly" : true,
      "type" : "array",
      "uniqueItems" : true,
      "items" : {
        "type" : "object"
      }
    },
    "created_by" : {
      "title" : "Created by",
      "readOnly" : true,
      "type" : "string"
    },
    "applicationDefaults" : {
      "title" : "Application defaults",
      "readOnly" : false,
      "type" : "object"
    },
    "uid" : {
      "title" : "Uid",
      "readOnly" : true,
      "type" : "string"
    },
    "applicationClass" : {
      "title" : "Application class",
      "readOnly" : false,
      "type" : "string"
    },
    "name" : {
      "title" : "Name",
      "readOnly" : false,
      "type" : "string"
    },
    "modified_by" : {
      "title" : "Modified by",
      "readOnly" : false,
      "type" : "string"
    },
    "shortName" : {
      "title" : "Short name",
      "readOnly" : false,
      "type" : "string"
    },
    "modified_at" : {
      "title" : "Modified at",
      "readOnly" : false,
      "type" : "string",
      "format" : "date-time"
    },
    "applicationId" : {
      "title" : "Application id",
      "readOnly" : true,
      "type" : "string"
    }
  },
  "definitions" : { },
  "type" : "object",
  "$schema" : "http://json-schema.org/draft-04/schema#"
}

List all applications

A GET request will list all the public applications and the applications owned by the currently logged in user.

Curl request

$ curl 'http://api.example.com/applications' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /applications HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Length: 13415
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "applications" : [ {
      "type" : "Java",
      "shortName" : "rabo_app1",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "5ffc4240fcdf4a479a16f2b0b12ab909",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "Java",
      "shortName" : "rabo_app2",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "39d82d7f34484b53ae1dd47ee8924502",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "Java",
      "shortName" : "rabo_app3",
      "visibility" : "private",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "39d82d7f34484b53ae1dd47ee8924512",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "Java",
      "shortName" : "rabo_priv_app3_2",
      "visibility" : "private",
      "owners" : {
        "name" : "Team App Admins",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "514d4oit834841869644c2ad8b439997",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "f692ca5191764258b7257a6b2a7fb188",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "Java",
      "shortName" : "test_revoke",
      "visibility" : "private",
      "owners" : {
        "name" : "Team Kad",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "514d4e9a834841869644c2ad8b439553",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "39d82d7994484b53ae1de37ee8924512",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "Java",
      "shortName" : "rabo_auto_app3",
      "visibility" : "public",
      "owners" : {
        "name" : "Team App Admins",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "514d4oit834841869644c2ad8b439997",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "4cc380171afc4c898b6f6c02caccf451",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "Java",
      "shortName" : "rabo_auto_app4",
      "visibility" : "public",
      "owners" : {
        "name" : "Team App Admins",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "514d4oit834841869644c2ad8b439997",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "aec9e4570f1c4866bef77722e2830d4b",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "Java",
      "shortName" : "rabo_app5",
      "visibility" : "public",
      "owners" : {
        "name" : "Team App Admins",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "514d4oit834841869644c2ad8b439997",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "fdc9e4570f1c4866bef77722e2830d5g",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "SINK",
      "shortName" : "rabo_app6",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "dbc9e4670h1c4866deg78722e2930d2g",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "SINK",
      "shortName" : "rabo_app7",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "ead8f4670h1c4866deg78722e2930e3f",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "SINK",
      "shortName" : "rabo_app8",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "fbe9f4670h1c4866deg78722e2931e4g",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "SINK",
      "shortName" : "rabo_app9",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "ghi9f4670h1c4866deg78722e2931e4g",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "SINK",
      "shortName" : "rabo_app10",
      "visibility" : "private",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "lmk9f4670h1c4866deg78722e2931e5g",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "SINK",
      "shortName" : "rabo_app11",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "ioi9f4670h1c4866deg78722e2921f5g",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    },
    "create" : {
      "href" : "...",
      "templated" : true,
      "title" : "Indication that an entity can be created"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 14,
    "totalPages" : 1,
    "number" : 0
  }
}
Relation Description

create

Existence of this link indicates that the currently authenticated user can create a new Application

Create Custom application

A POST request is used to create a new application.

Request fields

Path Type Description Constraints

name

String

The name of the Application. Must be unique per tenant.

Must match the regular expression (?i)^[a-z0-9\.\-_ ]+$. Must not be empty. Size must be between 3 and 50 inclusive

applicationId

String

The applicationId of the Application, usually a fully qualified class name. Must be unique.

shortName

String

Unique human-readable name. Only Alphanumeric and underscore allowed. Must be unique per tenant.

Must match the regular expression (?i)^[a-z0-9_]+$. Must not be empty. Size must be between 3 and 60 inclusive

owners

String

A valid URI of an existing group, must not be null.

Must not be null

description

String

A short summary describing the application

Size must be between 0 and 200 inclusive

visibility

String

Defines the visibility of this application. Possible values are Public and Private

applicationType

String

Application Axual type. Possible values are Custom and Connector.

Must not be null

type

String

Application software. Possible values: Java, Pega, SAP, DotNet, Bridge

Curl request

$ curl 'http://api.example.com/applications' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "applicationId" : "nl.rabobank.test.application,nl.rabobank.test.application2",
  "name" : "Test Application",
  "shortName" : "test_app",
  "description" : "This is a test application",
  "applicationType" : "CUSTOM",
  "type" : "Java",
  "visibility" : "PRIVATE",
  "owners" : "http://api.example.com/groups/514d4oit834841869644c2ad8b439997"
}'

HTTP request

POST /applications HTTP/1.1
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Content-Length: 349
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "applicationId" : "nl.rabobank.test.application,nl.rabobank.test.application2",
  "name" : "Test Application",
  "shortName" : "test_app",
  "description" : "This is a test application",
  "applicationType" : "CUSTOM",
  "type" : "Java",
  "visibility" : "PRIVATE",
  "owners" : "http://api.example.com/groups/514d4oit834841869644c2ad8b439997"
}

HTTP response

HTTP/1.1 201 Created
Location: http://api.example.com/applications/28cca01cba034495a88c681a6e639dc1

Create Connector application

A POST request is used to create a new connector application.

Request fields

Path Type Description Constraints

name

String

The name of the Application. Must be unique per tenant.

Must match the regular expression (?i)^[a-z0-9\.\-_ ]+$. Must not be empty. Size must be between 3 and 50 inclusive

applicationId

String

The applicationId of the Application, usually a fully qualified class name. Must be unique.

shortName

String

Unique human-readable name. Only Alphanumeric and underscore allowed. Must be unique per tenant.

Must match the regular expression (?i)^[a-z0-9_]+$. Must not be empty. Size must be between 3 and 60 inclusive

owners

String

The group id that describes the group details and must not be null.

Must not be null

description

String

A short summary describing the application

Size must be between 0 and 200 inclusive

visibility

String

Defines the visibility of this application. Possible values are Public and Private

applicationType

String

Application Axual type. Possible values are Custom and Connector.

Must not be null

applicationClass

String

Meaningful only when applicationType=CONNECTOR. Specify the connector used in Axual Connect.

applicationClassVersion

String

Meaningful only when applicationType=CONNECTOR. Specify the connector version used in Axual Connect.

type

String

When applicationType=CUSTOM possible values are Java, Pega, SAP, DotNet, Bridge. When applicationType=CONNECTOR possible values are SINK, SOURCE.

Curl request

$ curl 'http://api.example.com/applications' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "applicationId" : "com.axual.turbulence.connector.application1",
  "name" : "Test Connector Application",
  "shortName" : "test_cnnt_app",
  "description" : "This is a connector test application",
  "applicationType" : "CONNECTOR",
  "type" : "sink",
  "applicationClass" : "io.axual.distributor.logger.MessageLogger",
  "applicationClassVersion" : "1.0.0",
  "visibility" : "PRIVATE",
  "owners" : "http://api.example.com/groups/514d4oit834841869644c2ad8b439997"
}'

HTTP request

POST /applications HTTP/1.1
realm: rabo
Host: api.example.com
Content-Length: 469
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "applicationId" : "com.axual.turbulence.connector.application1",
  "name" : "Test Connector Application",
  "shortName" : "test_cnnt_app",
  "description" : "This is a connector test application",
  "applicationType" : "CONNECTOR",
  "type" : "sink",
  "applicationClass" : "io.axual.distributor.logger.MessageLogger",
  "applicationClassVersion" : "1.0.0",
  "visibility" : "PRIVATE",
  "owners" : "http://api.example.com/groups/514d4oit834841869644c2ad8b439997"
}

HTTP response

HTTP/1.1 201 Created
Location: http://api.example.com/applications/3e8266a0b3234c988935739d67875ac4

Create Default application configuration

A PATCH request is used to create a default configuration for a connector application.

Curl request

$ curl 'http://api.example.com/applications/dbc9e4670h1c4866deg78722e2930d2g' -i -X PATCH \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "applicationDefaults" : {
    "test.app.id" : "io.axual.connect.app.id"
  }
}'

HTTP request

PATCH /applications/dbc9e4670h1c4866deg78722e2930d2g HTTP/1.1
realm: rabo
Content-Length: 81
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "applicationDefaults" : {
    "test.app.id" : "io.axual.connect.app.id"
  }
}

HTTP response

HTTP/1.1 204 No Content
ETag: "0"
Last-Modified: Thu, 7 Jun 2018 23:16:23 GMT

Retrieve an application

The applications/{id} resource is used to retrieve, update and delete individual application.

A GET request will retrieve the details of an application.

HTTP request

GET /applications/5ffc4240fcdf4a479a16f2b0b12ab909 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1768
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "name" : "raboApplication1",
  "shortName" : "rabo_app1",
  "description" : null,
  "applicationType" : "Custom",
  "type" : "Java",
  "applicationClass" : null,
  "applicationClassVersion" : null,
  "applicationDefaults" : {
    "defaults_key4" : "defaults_value4"
  },
  "visibility" : "public",
  "allApplicationIds" : [ "nl.rabobank.app1" ],
  "uid" : "5ffc4240fcdf4a479a16f2b0b12ab909",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "applicationId" : "nl.rabobank.app1",
  "_embedded" : {
    "owners" : {
      "name" : "Application-raboApplication1",
      "emailAddress" : null,
      "phoneNumber" : null,
      "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "members" : {
          "href" : "...",
          "templated" : true,
          "title" : "Users belonging to this group"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "application" : {
      "href" : "...",
      "templated" : true,
      "title" : "An application"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "createApplicationPrincipal" : {
      "href" : "..."
    },
    "createApplicationAccess" : {
      "href" : "..."
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    },
    "owners" : {
      "href" : "...",
      "templated" : true,
      "title" : "The group responsible for this object"
    }
  }
}
Relation Description

edit

Existence of this link indicates that the currently authenticated user can edit this Application

delete

Existence of this link indicates that the currently authenticated user can delete this Application

createApplicationPrincipal

Existence of this link indicates that the currently authenticated user can create the ApplicationPrincipal for this Application

createApplicationAccess

Existence of this link indicates that the currently authenticated user can request consuming or producing streams for this Application

Retrieve a connector/plugin config

The applications/{id}/config resource is used to retrieve connector config using ConnectPluginInfo when the application doesn’t have an application default connector config defined.

A GET request will retrieve the details of a connector config using ConnectPluginInfo.

HTTP request

GET /applications/dbc9e4670h1c4866deg78722e2930d2g/config HTTP/1.1
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1746

{
  "pluginConfigs" : [ {
    "name" : "connector.class",
    "type" : "STRING",
    "required" : true,
    "defaultValue" : null,
    "importance" : "HIGH",
    "documentation" : "Name or alias of the class for this connector. Must be a subclass of org.apache.kafka.connect.connector.Connector. If the connector is org.apache.kafka.connect.file.FileStreamSinkConnector, you can either specify this full name,  or use \\\"FileStreamSink\\\" or \\\"FileStreamSinkConnector\\\" to make the configuration a bit shorter",
    "providedValue" : null
  }, {
    "name" : "key.converter",
    "type" : "CLASS",
    "required" : false,
    "defaultValue" : null,
    "importance" : "LOW",
    "documentation" : null,
    "providedValue" : null
  }, {
    "name" : "logger.name",
    "type" : "STRING",
    "required" : true,
    "defaultValue" : null,
    "importance" : "HIGH",
    "documentation" : "The name of the SLF4J Logger to write the messages",
    "providedValue" : null
  }, {
    "name" : "name",
    "type" : "STRING",
    "required" : true,
    "defaultValue" : null,
    "importance" : "HIGH",
    "documentation" : "Globally unique name to use for this connector.",
    "providedValue" : null
  }, {
    "name" : "tasks.max",
    "type" : "INT",
    "required" : false,
    "defaultValue" : null,
    "importance" : null,
    "documentation" : null,
    "providedValue" : null
  }, {
    "name" : "transforms",
    "type" : "LIST",
    "required" : false,
    "defaultValue" : "",
    "importance" : "LOW",
    "documentation" : "Aliases for the transformations to be applied to records.",
    "providedValue" : null
  } ],
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

Snippet links not found for operation::default-config-info-by-application-without-defaults

Retrieve an application default connector config

The applications/{id}/config resource is used to retrieve application default connector config when available. The defaultValue values come from connector default configuration. The providedValue values come from application default configuration.

A GET request will retrieve the details of an application default connector config combined with ConnectPluginInfo.

HTTP request

GET /applications/ead8f4670h1c4866deg78722e2930e3f/config HTTP/1.1
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1965

{
  "pluginConfigs" : [ {
    "name" : "connector.class",
    "type" : "STRING",
    "required" : true,
    "defaultValue" : null,
    "importance" : "HIGH",
    "documentation" : "Name or alias of the class for this connector. Must be a subclass of org.apache.kafka.connect.connector.Connector. If the connector is org.apache.kafka.connect.file.FileStreamSinkConnector, you can either specify this full name,  or use \\\"FileStreamSink\\\" or \\\"FileStreamSinkConnector\\\" to make the configuration a bit shorter",
    "providedValue" : null
  }, {
    "name" : "defaultskey2",
    "type" : null,
    "required" : false,
    "defaultValue" : null,
    "importance" : null,
    "documentation" : null,
    "providedValue" : "defaultsvalue2"
  }, {
    "name" : "key.converter",
    "type" : "CLASS",
    "required" : false,
    "defaultValue" : null,
    "importance" : "LOW",
    "documentation" : null,
    "providedValue" : null
  }, {
    "name" : "logger.name",
    "type" : "STRING",
    "required" : true,
    "defaultValue" : null,
    "importance" : "HIGH",
    "documentation" : "The name of the SLF4J Logger to write the messages",
    "providedValue" : null
  }, {
    "name" : "name",
    "type" : "STRING",
    "required" : true,
    "defaultValue" : null,
    "importance" : "HIGH",
    "documentation" : "Globally unique name to use for this connector.",
    "providedValue" : null
  }, {
    "name" : "tasks.max",
    "type" : "INT",
    "required" : false,
    "defaultValue" : null,
    "importance" : null,
    "documentation" : null,
    "providedValue" : null
  }, {
    "name" : "transforms",
    "type" : "LIST",
    "required" : false,
    "defaultValue" : "",
    "importance" : "LOW",
    "documentation" : "Aliases for the transformations to be applied to records.",
    "providedValue" : "defaulttransforms_value"
  } ],
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

Snippet links not found for operation::default-config-info-by-application-with-defaults

Update an application

A PATCH request is used to update an application. In the request, pass only the field that needs changing.

$ curl 'http://api.example.com/applications/5ffc4240fcdf4a479a16f2b0b12ab909' -i -X PATCH \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "name" : "Updated name"
}'
PATCH /applications/5ffc4240fcdf4a479a16f2b0b12ab909 HTTP/1.1
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Content-Length: 29
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "name" : "Updated name"
}
HTTP/1.1 204 No Content
ETag: "0"
Last-Modified: Thu, 7 Jun 2018 23:16:23 GMT

Search endpoints

/applications/search/findByName

Search for an application by exact name.

Parameter Description

name

Application name to search for

GET /applications/search/findByName?name=raboApplication1 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 1078
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "applications" : [ {
      "type" : "Java",
      "shortName" : "rabo_app1",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "5ffc4240fcdf4a479a16f2b0b12ab909",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

/applications/search/findByNameContaining

Search for an application by name containing search term.

Parameter Description

name

Term to search within application name.

GET /applications/search/findByNameContaining?name=app HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 12245
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "applications" : [ {
      "type" : "Java",
      "shortName" : "rabo_app1",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "5ffc4240fcdf4a479a16f2b0b12ab909",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "Java",
      "shortName" : "rabo_app2",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "39d82d7f34484b53ae1dd47ee8924502",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "Java",
      "shortName" : "rabo_app3",
      "visibility" : "private",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "39d82d7f34484b53ae1dd47ee8924512",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "Java",
      "shortName" : "rabo_priv_app3_2",
      "visibility" : "private",
      "owners" : {
        "name" : "Team App Admins",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "514d4oit834841869644c2ad8b439997",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "f692ca5191764258b7257a6b2a7fb188",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "Java",
      "shortName" : "rabo_auto_app3",
      "visibility" : "public",
      "owners" : {
        "name" : "Team App Admins",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "514d4oit834841869644c2ad8b439997",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "4cc380171afc4c898b6f6c02caccf451",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "Java",
      "shortName" : "rabo_auto_app4",
      "visibility" : "public",
      "owners" : {
        "name" : "Team App Admins",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "514d4oit834841869644c2ad8b439997",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "aec9e4570f1c4866bef77722e2830d4b",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "Java",
      "shortName" : "rabo_app5",
      "visibility" : "public",
      "owners" : {
        "name" : "Team App Admins",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "514d4oit834841869644c2ad8b439997",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "fdc9e4570f1c4866bef77722e2830d5g",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "SINK",
      "shortName" : "rabo_app6",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "dbc9e4670h1c4866deg78722e2930d2g",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "SINK",
      "shortName" : "rabo_app7",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "ead8f4670h1c4866deg78722e2930e3f",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "SINK",
      "shortName" : "rabo_app8",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "fbe9f4670h1c4866deg78722e2931e4g",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "SINK",
      "shortName" : "rabo_app9",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "ghi9f4670h1c4866deg78722e2931e4g",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "SINK",
      "shortName" : "rabo_app10",
      "visibility" : "private",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "lmk9f4670h1c4866deg78722e2931e5g",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }, {
      "type" : "SINK",
      "shortName" : "rabo_app11",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "ioi9f4670h1c4866deg78722e2921f5g",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "create" : {
      "href" : "...",
      "title" : "Indication that an entity can be created"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 13,
    "totalPages" : 1,
    "number" : 0
  }
}

/applications/search/findByShortName

Search for an application by exact short_name.

Parameter Description

short_name

Application short name to search for

GET /applications/search/findByShortName?short_name=rabo_app1 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 163
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "applications" : [ ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

/applications/search/findByApplicationId

Search for an application by applicationId containing search term.

Parameter Description

applicationId

Application Id to search for

GET /applications/search/findByApplicationId?applicationId=nl.rabobank.app1 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1768
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "name" : "raboApplication1",
  "shortName" : "rabo_app1",
  "description" : null,
  "applicationType" : "Custom",
  "type" : "Java",
  "applicationClass" : null,
  "applicationClassVersion" : null,
  "applicationDefaults" : {
    "defaults_key4" : "defaults_value4"
  },
  "visibility" : "public",
  "allApplicationIds" : [ "nl.rabobank.app1" ],
  "uid" : "5ffc4240fcdf4a479a16f2b0b12ab909",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "applicationId" : "nl.rabobank.app1",
  "_embedded" : {
    "owners" : {
      "name" : "Application-raboApplication1",
      "emailAddress" : null,
      "phoneNumber" : null,
      "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "members" : {
          "href" : "...",
          "templated" : true,
          "title" : "Users belonging to this group"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "application" : {
      "href" : "...",
      "templated" : true,
      "title" : "An application"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "createApplicationPrincipal" : {
      "href" : "..."
    },
    "createApplicationAccess" : {
      "href" : "..."
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    },
    "owners" : {
      "href" : "...",
      "templated" : true,
      "title" : "The group responsible for this object"
    }
  }
}

Delete endpoints

Deleting application is a two step process a GET request to check the constraints followed by the DELETE request

Delete application constraints

A GET request is used to get the constraints for deleting Application.

$ curl 'http://api.example.com/applications/5ffc4240fcdf4a479a16f2b0b12ab909/deletion-constraints' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
GET /applications/5ffc4240fcdf4a479a16f2b0b12ab909/deletion-constraints HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 84
Content-Type: application/json;charset=UTF-8

{
  "canDelete" : false,
  "activeGrantsCount" : 2,
  "activeDeploymentsCount" : 0
}

Delete application

A DELETE request is used to delete an Application.

$ curl 'http://api.example.com/applications/fdc9e4570f1c4866bef77722e2830d5g' -i -X DELETE \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN'
DELETE /applications/fdc9e4570f1c4866bef77722e2830d5g HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN
HTTP/1.1 204 No Content

ApplicationPrincipals

An ApplicationPrincipal is a security principal (certificate or comparable) that uniquely authenticates an Application on an Environment.

The /application_principals resource is used to create and list application principals.

ApplicationPrincipals Schema

The /application_principals resource uses the following json-schema:

GET /profile/application_principals HTTP/1.1
Accept: application/schema+json
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 1736
Content-Type: application/schema+json;charset=UTF-8

{
  "title" : "Application principal",
  "properties" : {
    "created_at" : {
      "title" : "Created at",
      "readOnly" : true,
      "type" : "string",
      "format" : "date-time"
    },
    "created_by" : {
      "title" : "Created by",
      "readOnly" : true,
      "type" : "string"
    },
    "privateKeyUploaded" : {
      "title" : "Private key uploaded",
      "readOnly" : true,
      "type" : "boolean"
    },
    "applicationPem" : {
      "title" : "Application pem",
      "readOnly" : false,
      "type" : "string"
    },
    "principal" : {
      "title" : "Principal",
      "readOnly" : false,
      "type" : "string"
    },
    "uid" : {
      "title" : "Uid",
      "readOnly" : true,
      "type" : "string"
    },
    "environment" : {
      "title" : "Environment",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "principalChain" : {
      "title" : "Principal chain",
      "readOnly" : false,
      "type" : "string"
    },
    "application" : {
      "title" : "Application",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "privateKeyPem" : {
      "title" : "Private key pem",
      "readOnly" : true,
      "type" : "string"
    },
    "modified_by" : {
      "title" : "Modified by",
      "readOnly" : false,
      "type" : "string"
    },
    "expiresOn" : {
      "title" : "Expires on",
      "readOnly" : false,
      "type" : "string",
      "format" : "date-time"
    },
    "modified_at" : {
      "title" : "Modified at",
      "readOnly" : false,
      "type" : "string",
      "format" : "date-time"
    }
  },
  "definitions" : { },
  "type" : "object",
  "$schema" : "http://json-schema.org/draft-04/schema#"
}

List all application principals

HTTP method GET is disabled for /application_principals. Refer to search endpoints to find one or more ApplicationPrincipal for an Application or an Environment.

Create Application Principal

A POST request is used to create a new ApplicationPrincipal. The request should include reference to a valid existing application and environment.

Request fields

Path Type Description Constraints

[].principal

String

The principal of an Application for an Environment

[].application

String

A valid URI of an existing application

[].environment

String

A valid URI of an existing environment

Curl request

$ curl 'http://api.example.com/application_principals/' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '[ {
  "principal" : "-----BEGIN CERTIFICATE-----\nMIIFhjCCA26gAwIBAgICECwwDQYJKoZIhvcNAQELBQAwKzEpMCcGA1UEAwwgQXh1\nYWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEwHhcNMTkwNjEzMTQwNTMyWhcN\nMjExMTI5MTQwNTMyWjBjMQswCQYDVQQGEwJOTDEQMA4GA1UECAwHVXRyZWNodDEQ\nMA4GA1UEBwwHVXRyZWNodDEOMAwGA1UECgwFQXh1YWwxDjAMBgNVBAsMBUF4dWFs\nMRAwDgYDVQQDDAd0ZXN0IENOMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\nAgEAnZaQX6aDGnNsua3DNlV/RI8BmjvpFaqOWNmWQYive6w8BTciuq+EeVUM6SGc\nST4YCFsuNFQjxYCiGMzFBp1kBWOY/x255MVik/zlcSZgSIqr2zikyR/9d9F9QEQr\nUXPthu3UwLXWJu+itfiOKDb5a2SY512MXaUDNntiZdSoL9IzV3vKOxNibyT3Ldmc\nf4FvBpF3cH+/SFjWi7Nu7u6xqQDotm/u3S61XaFlenTHwHvNezLtSU7xVFoFOGk+\nC0OTfLFXcEeRPujTpDC15PweBwlnwmmj7QjmJYI6Eq1dJ5JW5rrHLO1qYqZtfyG3\nl1PsGpxWHNJGTIyNjbQzcjdCCZBSdEVnICAU6m4RG33EXkjExPerlEhCcw8D703r\nWB8fgBc1n3wM/NZ3YXsHxTIcBTYFeIAzs3sGDKZ4cjxzktFIAUQ5aIMj9vc95et8\nTE8EiVpDDbL0SppmSawoA+/U+sx7t8Hh9m/HnGNAIULuj4CWYqvgM2/4ptSdpQfl\nzCKe4Hp1ACfcuOs/O5sj0PhosdOHKoLFki+Bf+wL5I83VpNnDHuEZ+zNF83JdcWL\ncd5hWWZ+EcW9GO3ITUKvBwKTKWB9wHCdyuAUTj6UrF1X4PYMvV5rK081gguefJH9\nh9RlBWy+5JDU2j7nt1Jrl4CM1v73LftCKmCC6bF8wPfl34MCAwEAAaN8MHowCQYD\nVR0TBAIwADAdBgNVHQ4EFgQUbFnI40k82TldvwpXAmngw+Gy4OYwHwYDVR0jBBgw\nFoAUa9IpV4tSNiwFCsZXuRp0eKwTH2YwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQW\nMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEAlMAVbb+M\nKx6ej6boH27b5fSZGCiXEanQ0u8uO1DeLJsagYwsb9EsCLQpVc5+M+rhMk++yVvr\n2Yb+UkTWfWcUwTcfLk3TEYe8X/8zqY+uDJOumNpSIgyF0kPeQ9KGNjaCZLa87Npb\n0dvXIabohJlEMGJt2/cAK19keC5VbxwKeSk95RUiSwgE8K4DbtyFUIIy8a1y+Mwu\nvlfIz/FVgQWlWjSZ0NUx7/oKgznDg5oRjiuD6yYM084soiW3RgxGQ/sxqUXJyc++\nFU3xwO3mVX1tjry/d42KRSxsLpM2+jAXawwzRWFjuFUExl1i1OgaGtU33MRo6siO\n0BPal3eBC5I7rGb8GOuYQmO5QLPpj8+sxCzqzKQOZ9ATLvdjM6v9EiRp5nuTXFh4\nV07qQ4hxs4KeRz9Oig5VpnHQ8/SGWFPV2TgEnPr3Lu6knNjvI8O9wwo1mF/Q3yUc\nHE1YdLJ9ctJ2KHbsPpWDO4Zk7+6LejkbscYzEOA2pUlQzpv1rZmOQcnhnhKHlppK\ni5ogPiczSIdmOqQ1jQNS7hzdWZCxpGdjsXtVrYRFUDRv9vqHieBSzuh/GI/PvW7d\nPNRKkMlItv+C4UczOBM1y3kMsHwFSvFfC++TBlA4PkSmtpgnMAXePUlck6H8irtD\naqeURSylqc7U1W1KbsDpI97UCxbVZnFPMhE=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFLTCCAxWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UEAwwVQXh1\nYWwgRHVtbXkgUm9vdCAyMDE4MB4XDTE4MDUyOTExMDEzNFoXDTI4MDUyNjExMDEz\nNFowKzEpMCcGA1UEAwwgQXh1YWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEw\nggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9uOuzJekmeo3hl8fjQlKS\nHApS3llcliq1YrXpkMbHAA9StHaMHPW+Dzr2/+cdfBAmN3sujCY8Paq15QI+TDOq\nKA5SByCBQKXx2qulBPcZs3mDMt+KxAaeWfwR4Nj0NNKbmw2HjDddo77joeVOuOX2\n4o1wXzmAAolVMIcRYA11EMWNUtYrHCzBa7RfYht2G5dE69ckrgfw1Nxs01Sbg+xP\nsK9aK/LHPUalYZNY+76x7vabEpzaPfpyKzDTWA20SPk0WfTf9/+K3o+urzDG8O/q\nw9xbBOzWohGmRyA/z841p1SD7inpZcyO/KeW1yTP2WyFxADwUrv2mEYXnma/Gdna\nG62IQYk/UMex9W8pT6tfwrg/36sSwr88yPR5dJxzjHUE+w/rYG3k+K+EqvZ5qOC5\n32AJ9BS2nbNuGpmRU1qoMCwpL7B2E/CKJLIdFcf/qmcnWJEXo+u34+fQZg8XaDCI\nXhUqAHz6YkjCiFGd/JwL1IqsfxFsV9wHTUbW2AumglU65ZrjhXrrzE7Hk9ng1spJ\ndOwfBihBNjnr0mKHY9leJ3chJ9HQ55/fEgcRNrj8EC69QCeAtpY5yOAjKpA03UvF\ngrDt8CIyIehNUwTXIhQSHZU4eZ0rzWf0vvMbhL2FvKtphbpnNKoXeNLv2IMZpT4B\nVwsqLqaIkl/I4FPpYBoSYwIDAQABo2YwZDAdBgNVHQ4EFgQUa9IpV4tSNiwFCsZX\nuRp0eKwTH2YwHwYDVR0jBBgwFoAUdKOPDqSFQ6Bfk0I/asBkByt5gsUwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIB\nAKoNIqiOdjlUBNg7cvR9Su4KgGrsZf78pG1H2MlNxJjFM/80EiWEfze/EG2MLxFq\n8vToIHDjb0kVetYpdmfHNXTTlaaroBlXwyUYToPzQ985qr3LD8RhYZFAsiZCTtpJ\n4FT6sh/mccTyx8G8+ZS6mn/le2WPj/t6beNLgbdl5n8fghdQcmT/TqGXE50UftWt\nHSx3fsq2aKuNdVzhKzTin50IbiE9DV1dKo6B+ipOy/Dz5GMv3Z/3ntLTvxabCMOl\n7s7WsUE7VPABRSifUS80Z9Ai38faLSu+Ouzx40ceXwvlFQtJ2LYQ8Ru5Q63k2wB3\nEOE6cgAhiYExrz3fDDtUkui9vIfWfTPMnXR7xQ8YqK4Qqld2ESxvMQU2jzbZKSf+\n3sWnPvN4HTg0cfysmOdLGZwf3u8A9tMtxhUEtxUx7r76M4ekSKdNv1Nf5u5N/h7b\nAbEqSp1XADTxkE448i7hNJzn2Ce6JtFya231Ni0xyYKQIajP18jNypAw1eABYFkN\n53vQTUfqcbtcrCios1xRdDqfgkYaKZv7p63aoObFTf/mmG7sFjGAEPQscagOukwN\nwnkjCVifVbk5qJUaUWSLeYziI+HYkEA9P/h4o83nbf0YgBtOFoc0XWKmKagHifZN\nSEJ9kRCWzYaL2ChiL6jHGh26WT/hbNKeAlcxPnT4u/l1\n-----END CERTIFICATE-----\n",
  "application" : "http://api.example.com/applications/39d82d7f34484b53ae1dd47ee8924512",
  "environment" : "http://api.example.com/environments/047ab08009fe4da8be6905b55552ab52"
} ]'

HTTP request

POST /application_principals/ HTTP/1.1
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
Content-Length: 4098
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

[ {
  "principal" : "-----BEGIN CERTIFICATE-----\nMIIFhjCCA26gAwIBAgICECwwDQYJKoZIhvcNAQELBQAwKzEpMCcGA1UEAwwgQXh1\nYWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEwHhcNMTkwNjEzMTQwNTMyWhcN\nMjExMTI5MTQwNTMyWjBjMQswCQYDVQQGEwJOTDEQMA4GA1UECAwHVXRyZWNodDEQ\nMA4GA1UEBwwHVXRyZWNodDEOMAwGA1UECgwFQXh1YWwxDjAMBgNVBAsMBUF4dWFs\nMRAwDgYDVQQDDAd0ZXN0IENOMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\nAgEAnZaQX6aDGnNsua3DNlV/RI8BmjvpFaqOWNmWQYive6w8BTciuq+EeVUM6SGc\nST4YCFsuNFQjxYCiGMzFBp1kBWOY/x255MVik/zlcSZgSIqr2zikyR/9d9F9QEQr\nUXPthu3UwLXWJu+itfiOKDb5a2SY512MXaUDNntiZdSoL9IzV3vKOxNibyT3Ldmc\nf4FvBpF3cH+/SFjWi7Nu7u6xqQDotm/u3S61XaFlenTHwHvNezLtSU7xVFoFOGk+\nC0OTfLFXcEeRPujTpDC15PweBwlnwmmj7QjmJYI6Eq1dJ5JW5rrHLO1qYqZtfyG3\nl1PsGpxWHNJGTIyNjbQzcjdCCZBSdEVnICAU6m4RG33EXkjExPerlEhCcw8D703r\nWB8fgBc1n3wM/NZ3YXsHxTIcBTYFeIAzs3sGDKZ4cjxzktFIAUQ5aIMj9vc95et8\nTE8EiVpDDbL0SppmSawoA+/U+sx7t8Hh9m/HnGNAIULuj4CWYqvgM2/4ptSdpQfl\nzCKe4Hp1ACfcuOs/O5sj0PhosdOHKoLFki+Bf+wL5I83VpNnDHuEZ+zNF83JdcWL\ncd5hWWZ+EcW9GO3ITUKvBwKTKWB9wHCdyuAUTj6UrF1X4PYMvV5rK081gguefJH9\nh9RlBWy+5JDU2j7nt1Jrl4CM1v73LftCKmCC6bF8wPfl34MCAwEAAaN8MHowCQYD\nVR0TBAIwADAdBgNVHQ4EFgQUbFnI40k82TldvwpXAmngw+Gy4OYwHwYDVR0jBBgw\nFoAUa9IpV4tSNiwFCsZXuRp0eKwTH2YwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQW\nMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEAlMAVbb+M\nKx6ej6boH27b5fSZGCiXEanQ0u8uO1DeLJsagYwsb9EsCLQpVc5+M+rhMk++yVvr\n2Yb+UkTWfWcUwTcfLk3TEYe8X/8zqY+uDJOumNpSIgyF0kPeQ9KGNjaCZLa87Npb\n0dvXIabohJlEMGJt2/cAK19keC5VbxwKeSk95RUiSwgE8K4DbtyFUIIy8a1y+Mwu\nvlfIz/FVgQWlWjSZ0NUx7/oKgznDg5oRjiuD6yYM084soiW3RgxGQ/sxqUXJyc++\nFU3xwO3mVX1tjry/d42KRSxsLpM2+jAXawwzRWFjuFUExl1i1OgaGtU33MRo6siO\n0BPal3eBC5I7rGb8GOuYQmO5QLPpj8+sxCzqzKQOZ9ATLvdjM6v9EiRp5nuTXFh4\nV07qQ4hxs4KeRz9Oig5VpnHQ8/SGWFPV2TgEnPr3Lu6knNjvI8O9wwo1mF/Q3yUc\nHE1YdLJ9ctJ2KHbsPpWDO4Zk7+6LejkbscYzEOA2pUlQzpv1rZmOQcnhnhKHlppK\ni5ogPiczSIdmOqQ1jQNS7hzdWZCxpGdjsXtVrYRFUDRv9vqHieBSzuh/GI/PvW7d\nPNRKkMlItv+C4UczOBM1y3kMsHwFSvFfC++TBlA4PkSmtpgnMAXePUlck6H8irtD\naqeURSylqc7U1W1KbsDpI97UCxbVZnFPMhE=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFLTCCAxWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UEAwwVQXh1\nYWwgRHVtbXkgUm9vdCAyMDE4MB4XDTE4MDUyOTExMDEzNFoXDTI4MDUyNjExMDEz\nNFowKzEpMCcGA1UEAwwgQXh1YWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEw\nggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9uOuzJekmeo3hl8fjQlKS\nHApS3llcliq1YrXpkMbHAA9StHaMHPW+Dzr2/+cdfBAmN3sujCY8Paq15QI+TDOq\nKA5SByCBQKXx2qulBPcZs3mDMt+KxAaeWfwR4Nj0NNKbmw2HjDddo77joeVOuOX2\n4o1wXzmAAolVMIcRYA11EMWNUtYrHCzBa7RfYht2G5dE69ckrgfw1Nxs01Sbg+xP\nsK9aK/LHPUalYZNY+76x7vabEpzaPfpyKzDTWA20SPk0WfTf9/+K3o+urzDG8O/q\nw9xbBOzWohGmRyA/z841p1SD7inpZcyO/KeW1yTP2WyFxADwUrv2mEYXnma/Gdna\nG62IQYk/UMex9W8pT6tfwrg/36sSwr88yPR5dJxzjHUE+w/rYG3k+K+EqvZ5qOC5\n32AJ9BS2nbNuGpmRU1qoMCwpL7B2E/CKJLIdFcf/qmcnWJEXo+u34+fQZg8XaDCI\nXhUqAHz6YkjCiFGd/JwL1IqsfxFsV9wHTUbW2AumglU65ZrjhXrrzE7Hk9ng1spJ\ndOwfBihBNjnr0mKHY9leJ3chJ9HQ55/fEgcRNrj8EC69QCeAtpY5yOAjKpA03UvF\ngrDt8CIyIehNUwTXIhQSHZU4eZ0rzWf0vvMbhL2FvKtphbpnNKoXeNLv2IMZpT4B\nVwsqLqaIkl/I4FPpYBoSYwIDAQABo2YwZDAdBgNVHQ4EFgQUa9IpV4tSNiwFCsZX\nuRp0eKwTH2YwHwYDVR0jBBgwFoAUdKOPDqSFQ6Bfk0I/asBkByt5gsUwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIB\nAKoNIqiOdjlUBNg7cvR9Su4KgGrsZf78pG1H2MlNxJjFM/80EiWEfze/EG2MLxFq\n8vToIHDjb0kVetYpdmfHNXTTlaaroBlXwyUYToPzQ985qr3LD8RhYZFAsiZCTtpJ\n4FT6sh/mccTyx8G8+ZS6mn/le2WPj/t6beNLgbdl5n8fghdQcmT/TqGXE50UftWt\nHSx3fsq2aKuNdVzhKzTin50IbiE9DV1dKo6B+ipOy/Dz5GMv3Z/3ntLTvxabCMOl\n7s7WsUE7VPABRSifUS80Z9Ai38faLSu+Ouzx40ceXwvlFQtJ2LYQ8Ru5Q63k2wB3\nEOE6cgAhiYExrz3fDDtUkui9vIfWfTPMnXR7xQ8YqK4Qqld2ESxvMQU2jzbZKSf+\n3sWnPvN4HTg0cfysmOdLGZwf3u8A9tMtxhUEtxUx7r76M4ekSKdNv1Nf5u5N/h7b\nAbEqSp1XADTxkE448i7hNJzn2Ce6JtFya231Ni0xyYKQIajP18jNypAw1eABYFkN\n53vQTUfqcbtcrCios1xRdDqfgkYaKZv7p63aoObFTf/mmG7sFjGAEPQscagOukwN\nwnkjCVifVbk5qJUaUWSLeYziI+HYkEA9P/h4o83nbf0YgBtOFoc0XWKmKagHifZN\nSEJ9kRCWzYaL2ChiL6jHGh26WT/hbNKeAlcxPnT4u/l1\n-----END CERTIFICATE-----\n",
  "application" : "http://api.example.com/applications/39d82d7f34484b53ae1dd47ee8924512",
  "environment" : "http://api.example.com/environments/047ab08009fe4da8be6905b55552ab52"
} ]

HTTP response

HTTP/1.1 201 Created
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 80

"http://api.example.com/application_principals/ec123ebcd7264f02857cbff4aa0388ab"

Create Application Principal with Private key

A POST request is used to create a new ApplicationPrincipal with a private key. This is used for connector type of applications. The request should include reference to a valid existing application and environment.

Request fields

Path Type Description Constraints

[].principal

String

The principal of an Application for an Environment

[].privateKey

String

The private key of an Application for an Environment

[].application

String

A valid URI of an existing application

[].environment

String

A valid URI of an existing environment

Curl request

$ curl 'http://api.example.com/application_principals/' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '[ {
  "principal" : "-----BEGIN CERTIFICATE-----\nMIIFhjCCA26gAwIBAgICECwwDQYJKoZIhvcNAQELBQAwKzEpMCcGA1UEAwwgQXh1\nYWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEwHhcNMTkwNjEzMTQwNTMyWhcN\nMjExMTI5MTQwNTMyWjBjMQswCQYDVQQGEwJOTDEQMA4GA1UECAwHVXRyZWNodDEQ\nMA4GA1UEBwwHVXRyZWNodDEOMAwGA1UECgwFQXh1YWwxDjAMBgNVBAsMBUF4dWFs\nMRAwDgYDVQQDDAd0ZXN0IENOMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\nAgEAnZaQX6aDGnNsua3DNlV/RI8BmjvpFaqOWNmWQYive6w8BTciuq+EeVUM6SGc\nST4YCFsuNFQjxYCiGMzFBp1kBWOY/x255MVik/zlcSZgSIqr2zikyR/9d9F9QEQr\nUXPthu3UwLXWJu+itfiOKDb5a2SY512MXaUDNntiZdSoL9IzV3vKOxNibyT3Ldmc\nf4FvBpF3cH+/SFjWi7Nu7u6xqQDotm/u3S61XaFlenTHwHvNezLtSU7xVFoFOGk+\nC0OTfLFXcEeRPujTpDC15PweBwlnwmmj7QjmJYI6Eq1dJ5JW5rrHLO1qYqZtfyG3\nl1PsGpxWHNJGTIyNjbQzcjdCCZBSdEVnICAU6m4RG33EXkjExPerlEhCcw8D703r\nWB8fgBc1n3wM/NZ3YXsHxTIcBTYFeIAzs3sGDKZ4cjxzktFIAUQ5aIMj9vc95et8\nTE8EiVpDDbL0SppmSawoA+/U+sx7t8Hh9m/HnGNAIULuj4CWYqvgM2/4ptSdpQfl\nzCKe4Hp1ACfcuOs/O5sj0PhosdOHKoLFki+Bf+wL5I83VpNnDHuEZ+zNF83JdcWL\ncd5hWWZ+EcW9GO3ITUKvBwKTKWB9wHCdyuAUTj6UrF1X4PYMvV5rK081gguefJH9\nh9RlBWy+5JDU2j7nt1Jrl4CM1v73LftCKmCC6bF8wPfl34MCAwEAAaN8MHowCQYD\nVR0TBAIwADAdBgNVHQ4EFgQUbFnI40k82TldvwpXAmngw+Gy4OYwHwYDVR0jBBgw\nFoAUa9IpV4tSNiwFCsZXuRp0eKwTH2YwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQW\nMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEAlMAVbb+M\nKx6ej6boH27b5fSZGCiXEanQ0u8uO1DeLJsagYwsb9EsCLQpVc5+M+rhMk++yVvr\n2Yb+UkTWfWcUwTcfLk3TEYe8X/8zqY+uDJOumNpSIgyF0kPeQ9KGNjaCZLa87Npb\n0dvXIabohJlEMGJt2/cAK19keC5VbxwKeSk95RUiSwgE8K4DbtyFUIIy8a1y+Mwu\nvlfIz/FVgQWlWjSZ0NUx7/oKgznDg5oRjiuD6yYM084soiW3RgxGQ/sxqUXJyc++\nFU3xwO3mVX1tjry/d42KRSxsLpM2+jAXawwzRWFjuFUExl1i1OgaGtU33MRo6siO\n0BPal3eBC5I7rGb8GOuYQmO5QLPpj8+sxCzqzKQOZ9ATLvdjM6v9EiRp5nuTXFh4\nV07qQ4hxs4KeRz9Oig5VpnHQ8/SGWFPV2TgEnPr3Lu6knNjvI8O9wwo1mF/Q3yUc\nHE1YdLJ9ctJ2KHbsPpWDO4Zk7+6LejkbscYzEOA2pUlQzpv1rZmOQcnhnhKHlppK\ni5ogPiczSIdmOqQ1jQNS7hzdWZCxpGdjsXtVrYRFUDRv9vqHieBSzuh/GI/PvW7d\nPNRKkMlItv+C4UczOBM1y3kMsHwFSvFfC++TBlA4PkSmtpgnMAXePUlck6H8irtD\naqeURSylqc7U1W1KbsDpI97UCxbVZnFPMhE=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFLTCCAxWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UEAwwVQXh1\nYWwgRHVtbXkgUm9vdCAyMDE4MB4XDTE4MDUyOTExMDEzNFoXDTI4MDUyNjExMDEz\nNFowKzEpMCcGA1UEAwwgQXh1YWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEw\nggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9uOuzJekmeo3hl8fjQlKS\nHApS3llcliq1YrXpkMbHAA9StHaMHPW+Dzr2/+cdfBAmN3sujCY8Paq15QI+TDOq\nKA5SByCBQKXx2qulBPcZs3mDMt+KxAaeWfwR4Nj0NNKbmw2HjDddo77joeVOuOX2\n4o1wXzmAAolVMIcRYA11EMWNUtYrHCzBa7RfYht2G5dE69ckrgfw1Nxs01Sbg+xP\nsK9aK/LHPUalYZNY+76x7vabEpzaPfpyKzDTWA20SPk0WfTf9/+K3o+urzDG8O/q\nw9xbBOzWohGmRyA/z841p1SD7inpZcyO/KeW1yTP2WyFxADwUrv2mEYXnma/Gdna\nG62IQYk/UMex9W8pT6tfwrg/36sSwr88yPR5dJxzjHUE+w/rYG3k+K+EqvZ5qOC5\n32AJ9BS2nbNuGpmRU1qoMCwpL7B2E/CKJLIdFcf/qmcnWJEXo+u34+fQZg8XaDCI\nXhUqAHz6YkjCiFGd/JwL1IqsfxFsV9wHTUbW2AumglU65ZrjhXrrzE7Hk9ng1spJ\ndOwfBihBNjnr0mKHY9leJ3chJ9HQ55/fEgcRNrj8EC69QCeAtpY5yOAjKpA03UvF\ngrDt8CIyIehNUwTXIhQSHZU4eZ0rzWf0vvMbhL2FvKtphbpnNKoXeNLv2IMZpT4B\nVwsqLqaIkl/I4FPpYBoSYwIDAQABo2YwZDAdBgNVHQ4EFgQUa9IpV4tSNiwFCsZX\nuRp0eKwTH2YwHwYDVR0jBBgwFoAUdKOPDqSFQ6Bfk0I/asBkByt5gsUwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIB\nAKoNIqiOdjlUBNg7cvR9Su4KgGrsZf78pG1H2MlNxJjFM/80EiWEfze/EG2MLxFq\n8vToIHDjb0kVetYpdmfHNXTTlaaroBlXwyUYToPzQ985qr3LD8RhYZFAsiZCTtpJ\n4FT6sh/mccTyx8G8+ZS6mn/le2WPj/t6beNLgbdl5n8fghdQcmT/TqGXE50UftWt\nHSx3fsq2aKuNdVzhKzTin50IbiE9DV1dKo6B+ipOy/Dz5GMv3Z/3ntLTvxabCMOl\n7s7WsUE7VPABRSifUS80Z9Ai38faLSu+Ouzx40ceXwvlFQtJ2LYQ8Ru5Q63k2wB3\nEOE6cgAhiYExrz3fDDtUkui9vIfWfTPMnXR7xQ8YqK4Qqld2ESxvMQU2jzbZKSf+\n3sWnPvN4HTg0cfysmOdLGZwf3u8A9tMtxhUEtxUx7r76M4ekSKdNv1Nf5u5N/h7b\nAbEqSp1XADTxkE448i7hNJzn2Ce6JtFya231Ni0xyYKQIajP18jNypAw1eABYFkN\n53vQTUfqcbtcrCios1xRdDqfgkYaKZv7p63aoObFTf/mmG7sFjGAEPQscagOukwN\nwnkjCVifVbk5qJUaUWSLeYziI+HYkEA9P/h4o83nbf0YgBtOFoc0XWKmKagHifZN\nSEJ9kRCWzYaL2ChiL6jHGh26WT/hbNKeAlcxPnT4u/l1\n-----END CERTIFICATE-----\n",
  "application" : "http://api.example.com/applications/dbc9e4670h1c4866deg78722e2930d2g",
  "environment" : "http://api.example.com/environments/047ab08009fe4da8be6905b55552ab52",
  "privateKey" : "-----BEGIN PRIVATE KEY-----\nMIIJQQIBADANBgkqhkiG9w0BAQEFAASCCSswggknAgEAAoICAQCdlpBfpoMac2y5\nrcM2VX9EjwGaO+kVqo5Y2ZZBiK97rDwFNyK6r4R5VQzpIZxJPhgIWy40VCPFgKIY\nzMUGnWQFY5j/HbnkxWKT/OVxJmBIiqvbOKTJH/130X1ARCtRc+2G7dTAtdYm76K1\n+I4oNvlrZJjnXYxdpQM2e2Jl1Kgv0jNXe8o7E2JvJPct2Zx/gW8GkXdwf79IWNaL\ns27u7rGpAOi2b+7dLrVdoWV6dMfAe817Mu1JTvFUWgU4aT4LQ5N8sVdwR5E+6NOk\nMLXk/B4HCWfCaaPtCOYlgjoSrV0nklbmuscs7Wpipm1/IbeXU+wanFYc0kZMjI2N\ntDNyN0IJkFJ0RWcgIBTqbhEbfcReSMTE96uUSEJzDwPvTetYHx+AFzWffAz81ndh\newfFMhwFNgV4gDOzewYMpnhyPHOS0UgBRDlogyP29z3l63xMTwSJWkMNsvRKmmZJ\nrCgD79T6zHu3weH2b8ecY0AhQu6PgJZiq+Azb/im1J2lB+XMIp7genUAJ9y46z87\nmyPQ+Gix04cqgsWSL4F/7AvkjzdWk2cMe4Rn7M0Xzcl1xYtx3mFZZn4Rxb0Y7chN\nQq8HApMpYH3AcJ3K4BROPpSsXVfg9gy9XmsrTzWCC558kf2H1GUFbL7kkNTaPue3\nUmuXgIzW/vct+0IqYILpsXzA9+XfgwIDAQABAoICAA3yTUSpz+B/ZpfoMOaWGnVO\n0q17r90jAwYJ+6pBFoazb3xmrMQo1GiIhmP7fYFd5XKX3zbyW1gXUkEvniA/vaJc\ndiXd053Tei3uq7+fzdWdsCfuk2bZVe1MtPEDF3JV+CeA1NtZPGKlwpioLqyQcPJ4\nLLANL2b6O5aOxN6OO3Q//hs38WXZCVUcyGNeZuNB6TmDljZ2l88nTZV/g8nRhheW\n5QGAVntsrtBigECeJS97xWupziY2vlTgwqWDauJEUMEwULS3ILuYj2JwjSh+x4mH\n447pGoDX0MZxCAKvJRdjdB1nWkk3mbqxT+94ZG8YFkUkoNpcIayUo9JuqD7rdQSP\n/PyxYgy7jmKh0flINuqdgwVZpz/8hjrGOfufYPrNfAZqjan1zt8hDQTyTI0V8Ngc\nXzSWMVddXObPyOrdlBbJRHvhQ5lpIh/TKqAURCKptpSarLdcwlQqiru6leDCNAwv\nAUPQ/212MrSl59p5T9RdvxikOfhFDalYcl3xywSjZowwRuSzgYXpRr8STKxxzlGB\nvO4rQYHPzdP3JvytFqPghSNSVt+M6qu1ph6ou70YHSpVuocvB5+6iHDDgr0vrSXE\nawm4EOSEI+J9F5/YkIE1UtOI6Aj5HHguAWJXBj0ZGiv/bpAVNr+eTx1Ga9qM8nx4\n/2LxlF0urRWZw+qfXL3BAoIBAQDaI0L8k460PSUVF/dL5jwqvSPZey+piHJGWfBr\n5wWslDYn/ABJYKj3NYFF4WDvnabXa8qTmxGOvMuwAwpkp3iEY7MB651tJ26CSCQ4\nYSYwYve/uuhlfQhtFiEihbj9jPebWJK1mQTU+SMOrxWU6UfkFTtsBqnB1ewAorWg\nAbqICUoW4Up10GOAsKRaRu6vhbReTRjM6/G2d3WlFiVsroVPbJeAAWCM7StQaio+\nUKfDJwv8TTC6nPLiYjXfwCLhMSmmD89rreWh8MvVefNTQ4sHcdLJe7reWYxYgOQ3\nXokPFDkbUOqZ1vwahDADYzzI0Nc0YgZW5vR8aYJkhnr7IzUlAoIBAQC48Nb2QXdl\ns9WUzCkKqhonUJhv5+85HIzE7EwnBaNgPAV+whLc1RHYXYGbIXmwZnGPW9gO8E9a\nnoVCCOLKEofhDQnbOH0xucESsGe1CeTj9gjlr0ASxqp7C2EnDBOBbd2g1KGX+IER\ny4YD3D1qeegG/Sntdh4G2x7W/omHRkz+uZ9EuJDd6VBZZwckGJ0kv4iUBAxn1BtL\ngTkFJwManqrQd/4Ceh4osUlXgmpMgjZWzXA+i2jrZh4uWTvvUFEh/GsAqVhXcrHS\nEkSTB8pVRmXq5WIefPNkQqfoXX3aa0KYgPK8TpJWu/oqzPLCzP12ioCFNDsFIx8o\ngFIqSniwhKWHAoIBACdMmQHmF5yTM34UXkI3TXmpr667yb9yTJwuEeluqpAH96XG\necq+dlJrOkn7q7ofnfJLgiiLlGMx0kR4l8PAhC7dw19CMo96vicMljHuFrI68kWB\nh+LY3s7AYOHWU5iib+11zKCY28z+wXkgw/Oa/4+w3467uJOqVaVbqvsTtKZTfhyX\nJBILpBGIQWPeSZwnq3Id06z/iQGFjhVa4w0sd+nyN20hUmKxS89mAQxO/ZpkC329\n7lyAcCWm6evQsrf9YnJ/gK/2mVtOhXqFSPgkQATsVbxk5Sqv2WAMgJEVH/4ud4db\nUZi7qZmhXQEPPOE09sCCNIAthbhwTcSMkdVy510CggEAQr3PpdEcaJyMsIU5LnsS\nsyt3x7LY9zBhcNOh69cyDZG7nfIl4oIWTZH5KuXax5lA1C6d+04oJRjeGGWiirBD\nTylobC+npqFVlwwIcSIf81CgB1vGcMA3V+5UYkYOaAAhImB57KEm2ygqtgvuMhXK\ncXM9hU/CKFE9gPMc6K+rK6YLXz6IMT143Lq8rf8f/toMTPZlD7dRHl+FF2Hr0dh+\n5nrXNUeiyKaqRCVxfSjkuVCseDXRaFpS/AECCyxeCzjP2M5EblKa76feDX2bPEkK\nkMm1LjGDmKQhek77Ey7wOp8WenSUhS6TaozJ8xkNQ5FaLjgaMJFrNi+Q92gmw/Uq\n0wKCAQA7eo+Wz6VBg7i//jrVaZl7MqmuqpaID6vXpAbmjU5BGEoOzxK9cIS0AMsL\npY5QzwQb+y9S35qpkaXsgndlyvdMBq58e5NN+Z8WEULuO85CW3rD6e1rWlXx6M3Y\nLFSKJQUjQ63FQJ+LX8nHylDkV/9T/sCFiYa1zv3AW2c7rz8eqXP9MabptpMqRfwZ\nUVlECszO2xb3zwg7WEnZu+DBNKsTIrKT8w/h3KvvWRbORpDOYcjW64V2NnjBP6Pc\nCUE2QsYVDOG/UDXjNanf3DnMCVVMJn06p+HQCDlATFnScu1qo++A7Dj4HTWmDtiU\nDsbI3yNePnNb5x1AZjii68cy9pLG\n-----END PRIVATE KEY-----"
} ]'

HTTP request

POST /application_principals/ HTTP/1.1
realm: rabo
Content-Length: 7437
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

[ {
  "principal" : "-----BEGIN CERTIFICATE-----\nMIIFhjCCA26gAwIBAgICECwwDQYJKoZIhvcNAQELBQAwKzEpMCcGA1UEAwwgQXh1\nYWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEwHhcNMTkwNjEzMTQwNTMyWhcN\nMjExMTI5MTQwNTMyWjBjMQswCQYDVQQGEwJOTDEQMA4GA1UECAwHVXRyZWNodDEQ\nMA4GA1UEBwwHVXRyZWNodDEOMAwGA1UECgwFQXh1YWwxDjAMBgNVBAsMBUF4dWFs\nMRAwDgYDVQQDDAd0ZXN0IENOMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\nAgEAnZaQX6aDGnNsua3DNlV/RI8BmjvpFaqOWNmWQYive6w8BTciuq+EeVUM6SGc\nST4YCFsuNFQjxYCiGMzFBp1kBWOY/x255MVik/zlcSZgSIqr2zikyR/9d9F9QEQr\nUXPthu3UwLXWJu+itfiOKDb5a2SY512MXaUDNntiZdSoL9IzV3vKOxNibyT3Ldmc\nf4FvBpF3cH+/SFjWi7Nu7u6xqQDotm/u3S61XaFlenTHwHvNezLtSU7xVFoFOGk+\nC0OTfLFXcEeRPujTpDC15PweBwlnwmmj7QjmJYI6Eq1dJ5JW5rrHLO1qYqZtfyG3\nl1PsGpxWHNJGTIyNjbQzcjdCCZBSdEVnICAU6m4RG33EXkjExPerlEhCcw8D703r\nWB8fgBc1n3wM/NZ3YXsHxTIcBTYFeIAzs3sGDKZ4cjxzktFIAUQ5aIMj9vc95et8\nTE8EiVpDDbL0SppmSawoA+/U+sx7t8Hh9m/HnGNAIULuj4CWYqvgM2/4ptSdpQfl\nzCKe4Hp1ACfcuOs/O5sj0PhosdOHKoLFki+Bf+wL5I83VpNnDHuEZ+zNF83JdcWL\ncd5hWWZ+EcW9GO3ITUKvBwKTKWB9wHCdyuAUTj6UrF1X4PYMvV5rK081gguefJH9\nh9RlBWy+5JDU2j7nt1Jrl4CM1v73LftCKmCC6bF8wPfl34MCAwEAAaN8MHowCQYD\nVR0TBAIwADAdBgNVHQ4EFgQUbFnI40k82TldvwpXAmngw+Gy4OYwHwYDVR0jBBgw\nFoAUa9IpV4tSNiwFCsZXuRp0eKwTH2YwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQW\nMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEAlMAVbb+M\nKx6ej6boH27b5fSZGCiXEanQ0u8uO1DeLJsagYwsb9EsCLQpVc5+M+rhMk++yVvr\n2Yb+UkTWfWcUwTcfLk3TEYe8X/8zqY+uDJOumNpSIgyF0kPeQ9KGNjaCZLa87Npb\n0dvXIabohJlEMGJt2/cAK19keC5VbxwKeSk95RUiSwgE8K4DbtyFUIIy8a1y+Mwu\nvlfIz/FVgQWlWjSZ0NUx7/oKgznDg5oRjiuD6yYM084soiW3RgxGQ/sxqUXJyc++\nFU3xwO3mVX1tjry/d42KRSxsLpM2+jAXawwzRWFjuFUExl1i1OgaGtU33MRo6siO\n0BPal3eBC5I7rGb8GOuYQmO5QLPpj8+sxCzqzKQOZ9ATLvdjM6v9EiRp5nuTXFh4\nV07qQ4hxs4KeRz9Oig5VpnHQ8/SGWFPV2TgEnPr3Lu6knNjvI8O9wwo1mF/Q3yUc\nHE1YdLJ9ctJ2KHbsPpWDO4Zk7+6LejkbscYzEOA2pUlQzpv1rZmOQcnhnhKHlppK\ni5ogPiczSIdmOqQ1jQNS7hzdWZCxpGdjsXtVrYRFUDRv9vqHieBSzuh/GI/PvW7d\nPNRKkMlItv+C4UczOBM1y3kMsHwFSvFfC++TBlA4PkSmtpgnMAXePUlck6H8irtD\naqeURSylqc7U1W1KbsDpI97UCxbVZnFPMhE=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFLTCCAxWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UEAwwVQXh1\nYWwgRHVtbXkgUm9vdCAyMDE4MB4XDTE4MDUyOTExMDEzNFoXDTI4MDUyNjExMDEz\nNFowKzEpMCcGA1UEAwwgQXh1YWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEw\nggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9uOuzJekmeo3hl8fjQlKS\nHApS3llcliq1YrXpkMbHAA9StHaMHPW+Dzr2/+cdfBAmN3sujCY8Paq15QI+TDOq\nKA5SByCBQKXx2qulBPcZs3mDMt+KxAaeWfwR4Nj0NNKbmw2HjDddo77joeVOuOX2\n4o1wXzmAAolVMIcRYA11EMWNUtYrHCzBa7RfYht2G5dE69ckrgfw1Nxs01Sbg+xP\nsK9aK/LHPUalYZNY+76x7vabEpzaPfpyKzDTWA20SPk0WfTf9/+K3o+urzDG8O/q\nw9xbBOzWohGmRyA/z841p1SD7inpZcyO/KeW1yTP2WyFxADwUrv2mEYXnma/Gdna\nG62IQYk/UMex9W8pT6tfwrg/36sSwr88yPR5dJxzjHUE+w/rYG3k+K+EqvZ5qOC5\n32AJ9BS2nbNuGpmRU1qoMCwpL7B2E/CKJLIdFcf/qmcnWJEXo+u34+fQZg8XaDCI\nXhUqAHz6YkjCiFGd/JwL1IqsfxFsV9wHTUbW2AumglU65ZrjhXrrzE7Hk9ng1spJ\ndOwfBihBNjnr0mKHY9leJ3chJ9HQ55/fEgcRNrj8EC69QCeAtpY5yOAjKpA03UvF\ngrDt8CIyIehNUwTXIhQSHZU4eZ0rzWf0vvMbhL2FvKtphbpnNKoXeNLv2IMZpT4B\nVwsqLqaIkl/I4FPpYBoSYwIDAQABo2YwZDAdBgNVHQ4EFgQUa9IpV4tSNiwFCsZX\nuRp0eKwTH2YwHwYDVR0jBBgwFoAUdKOPDqSFQ6Bfk0I/asBkByt5gsUwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIB\nAKoNIqiOdjlUBNg7cvR9Su4KgGrsZf78pG1H2MlNxJjFM/80EiWEfze/EG2MLxFq\n8vToIHDjb0kVetYpdmfHNXTTlaaroBlXwyUYToPzQ985qr3LD8RhYZFAsiZCTtpJ\n4FT6sh/mccTyx8G8+ZS6mn/le2WPj/t6beNLgbdl5n8fghdQcmT/TqGXE50UftWt\nHSx3fsq2aKuNdVzhKzTin50IbiE9DV1dKo6B+ipOy/Dz5GMv3Z/3ntLTvxabCMOl\n7s7WsUE7VPABRSifUS80Z9Ai38faLSu+Ouzx40ceXwvlFQtJ2LYQ8Ru5Q63k2wB3\nEOE6cgAhiYExrz3fDDtUkui9vIfWfTPMnXR7xQ8YqK4Qqld2ESxvMQU2jzbZKSf+\n3sWnPvN4HTg0cfysmOdLGZwf3u8A9tMtxhUEtxUx7r76M4ekSKdNv1Nf5u5N/h7b\nAbEqSp1XADTxkE448i7hNJzn2Ce6JtFya231Ni0xyYKQIajP18jNypAw1eABYFkN\n53vQTUfqcbtcrCios1xRdDqfgkYaKZv7p63aoObFTf/mmG7sFjGAEPQscagOukwN\nwnkjCVifVbk5qJUaUWSLeYziI+HYkEA9P/h4o83nbf0YgBtOFoc0XWKmKagHifZN\nSEJ9kRCWzYaL2ChiL6jHGh26WT/hbNKeAlcxPnT4u/l1\n-----END CERTIFICATE-----\n",
  "application" : "http://api.example.com/applications/dbc9e4670h1c4866deg78722e2930d2g",
  "environment" : "http://api.example.com/environments/047ab08009fe4da8be6905b55552ab52",
  "privateKey" : "-----BEGIN PRIVATE KEY-----\nMIIJQQIBADANBgkqhkiG9w0BAQEFAASCCSswggknAgEAAoICAQCdlpBfpoMac2y5\nrcM2VX9EjwGaO+kVqo5Y2ZZBiK97rDwFNyK6r4R5VQzpIZxJPhgIWy40VCPFgKIY\nzMUGnWQFY5j/HbnkxWKT/OVxJmBIiqvbOKTJH/130X1ARCtRc+2G7dTAtdYm76K1\n+I4oNvlrZJjnXYxdpQM2e2Jl1Kgv0jNXe8o7E2JvJPct2Zx/gW8GkXdwf79IWNaL\ns27u7rGpAOi2b+7dLrVdoWV6dMfAe817Mu1JTvFUWgU4aT4LQ5N8sVdwR5E+6NOk\nMLXk/B4HCWfCaaPtCOYlgjoSrV0nklbmuscs7Wpipm1/IbeXU+wanFYc0kZMjI2N\ntDNyN0IJkFJ0RWcgIBTqbhEbfcReSMTE96uUSEJzDwPvTetYHx+AFzWffAz81ndh\newfFMhwFNgV4gDOzewYMpnhyPHOS0UgBRDlogyP29z3l63xMTwSJWkMNsvRKmmZJ\nrCgD79T6zHu3weH2b8ecY0AhQu6PgJZiq+Azb/im1J2lB+XMIp7genUAJ9y46z87\nmyPQ+Gix04cqgsWSL4F/7AvkjzdWk2cMe4Rn7M0Xzcl1xYtx3mFZZn4Rxb0Y7chN\nQq8HApMpYH3AcJ3K4BROPpSsXVfg9gy9XmsrTzWCC558kf2H1GUFbL7kkNTaPue3\nUmuXgIzW/vct+0IqYILpsXzA9+XfgwIDAQABAoICAA3yTUSpz+B/ZpfoMOaWGnVO\n0q17r90jAwYJ+6pBFoazb3xmrMQo1GiIhmP7fYFd5XKX3zbyW1gXUkEvniA/vaJc\ndiXd053Tei3uq7+fzdWdsCfuk2bZVe1MtPEDF3JV+CeA1NtZPGKlwpioLqyQcPJ4\nLLANL2b6O5aOxN6OO3Q//hs38WXZCVUcyGNeZuNB6TmDljZ2l88nTZV/g8nRhheW\n5QGAVntsrtBigECeJS97xWupziY2vlTgwqWDauJEUMEwULS3ILuYj2JwjSh+x4mH\n447pGoDX0MZxCAKvJRdjdB1nWkk3mbqxT+94ZG8YFkUkoNpcIayUo9JuqD7rdQSP\n/PyxYgy7jmKh0flINuqdgwVZpz/8hjrGOfufYPrNfAZqjan1zt8hDQTyTI0V8Ngc\nXzSWMVddXObPyOrdlBbJRHvhQ5lpIh/TKqAURCKptpSarLdcwlQqiru6leDCNAwv\nAUPQ/212MrSl59p5T9RdvxikOfhFDalYcl3xywSjZowwRuSzgYXpRr8STKxxzlGB\nvO4rQYHPzdP3JvytFqPghSNSVt+M6qu1ph6ou70YHSpVuocvB5+6iHDDgr0vrSXE\nawm4EOSEI+J9F5/YkIE1UtOI6Aj5HHguAWJXBj0ZGiv/bpAVNr+eTx1Ga9qM8nx4\n/2LxlF0urRWZw+qfXL3BAoIBAQDaI0L8k460PSUVF/dL5jwqvSPZey+piHJGWfBr\n5wWslDYn/ABJYKj3NYFF4WDvnabXa8qTmxGOvMuwAwpkp3iEY7MB651tJ26CSCQ4\nYSYwYve/uuhlfQhtFiEihbj9jPebWJK1mQTU+SMOrxWU6UfkFTtsBqnB1ewAorWg\nAbqICUoW4Up10GOAsKRaRu6vhbReTRjM6/G2d3WlFiVsroVPbJeAAWCM7StQaio+\nUKfDJwv8TTC6nPLiYjXfwCLhMSmmD89rreWh8MvVefNTQ4sHcdLJe7reWYxYgOQ3\nXokPFDkbUOqZ1vwahDADYzzI0Nc0YgZW5vR8aYJkhnr7IzUlAoIBAQC48Nb2QXdl\ns9WUzCkKqhonUJhv5+85HIzE7EwnBaNgPAV+whLc1RHYXYGbIXmwZnGPW9gO8E9a\nnoVCCOLKEofhDQnbOH0xucESsGe1CeTj9gjlr0ASxqp7C2EnDBOBbd2g1KGX+IER\ny4YD3D1qeegG/Sntdh4G2x7W/omHRkz+uZ9EuJDd6VBZZwckGJ0kv4iUBAxn1BtL\ngTkFJwManqrQd/4Ceh4osUlXgmpMgjZWzXA+i2jrZh4uWTvvUFEh/GsAqVhXcrHS\nEkSTB8pVRmXq5WIefPNkQqfoXX3aa0KYgPK8TpJWu/oqzPLCzP12ioCFNDsFIx8o\ngFIqSniwhKWHAoIBACdMmQHmF5yTM34UXkI3TXmpr667yb9yTJwuEeluqpAH96XG\necq+dlJrOkn7q7ofnfJLgiiLlGMx0kR4l8PAhC7dw19CMo96vicMljHuFrI68kWB\nh+LY3s7AYOHWU5iib+11zKCY28z+wXkgw/Oa/4+w3467uJOqVaVbqvsTtKZTfhyX\nJBILpBGIQWPeSZwnq3Id06z/iQGFjhVa4w0sd+nyN20hUmKxS89mAQxO/ZpkC329\n7lyAcCWm6evQsrf9YnJ/gK/2mVtOhXqFSPgkQATsVbxk5Sqv2WAMgJEVH/4ud4db\nUZi7qZmhXQEPPOE09sCCNIAthbhwTcSMkdVy510CggEAQr3PpdEcaJyMsIU5LnsS\nsyt3x7LY9zBhcNOh69cyDZG7nfIl4oIWTZH5KuXax5lA1C6d+04oJRjeGGWiirBD\nTylobC+npqFVlwwIcSIf81CgB1vGcMA3V+5UYkYOaAAhImB57KEm2ygqtgvuMhXK\ncXM9hU/CKFE9gPMc6K+rK6YLXz6IMT143Lq8rf8f/toMTPZlD7dRHl+FF2Hr0dh+\n5nrXNUeiyKaqRCVxfSjkuVCseDXRaFpS/AECCyxeCzjP2M5EblKa76feDX2bPEkK\nkMm1LjGDmKQhek77Ey7wOp8WenSUhS6TaozJ8xkNQ5FaLjgaMJFrNi+Q92gmw/Uq\n0wKCAQA7eo+Wz6VBg7i//jrVaZl7MqmuqpaID6vXpAbmjU5BGEoOzxK9cIS0AMsL\npY5QzwQb+y9S35qpkaXsgndlyvdMBq58e5NN+Z8WEULuO85CW3rD6e1rWlXx6M3Y\nLFSKJQUjQ63FQJ+LX8nHylDkV/9T/sCFiYa1zv3AW2c7rz8eqXP9MabptpMqRfwZ\nUVlECszO2xb3zwg7WEnZu+DBNKsTIrKT8w/h3KvvWRbORpDOYcjW64V2NnjBP6Pc\nCUE2QsYVDOG/UDXjNanf3DnMCVVMJn06p+HQCDlATFnScu1qo++A7Dj4HTWmDtiU\nDsbI3yNePnNb5x1AZjii68cy9pLG\n-----END PRIVATE KEY-----"
} ]

HTTP response

HTTP/1.1 201 Created
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 80

"http://api.example.com/application_principals/4b8fd061edab4156b50cfd2b7c8a6e21"

Create Multiple Application Principals

A POST request is used to create multiple ApplicationPrincipal. The request should include references to a valid existing application and environment.

Request fields

Path Type Description Constraints

[].principal

String

The principal of an Application for an Environment

[].application

String

A valid URI of an existing application

[].environment

String

A valid URI of an existing environment

Curl request

$ curl 'http://api.example.com/application_principals/' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '[ {
  "principal" : "-----BEGIN CERTIFICATE-----\nMIIFhjCCA26gAwIBAgICECwwDQYJKoZIhvcNAQELBQAwKzEpMCcGA1UEAwwgQXh1\nYWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEwHhcNMTkwNjEzMTQwNTMyWhcN\nMjExMTI5MTQwNTMyWjBjMQswCQYDVQQGEwJOTDEQMA4GA1UECAwHVXRyZWNodDEQ\nMA4GA1UEBwwHVXRyZWNodDEOMAwGA1UECgwFQXh1YWwxDjAMBgNVBAsMBUF4dWFs\nMRAwDgYDVQQDDAd0ZXN0IENOMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\nAgEAnZaQX6aDGnNsua3DNlV/RI8BmjvpFaqOWNmWQYive6w8BTciuq+EeVUM6SGc\nST4YCFsuNFQjxYCiGMzFBp1kBWOY/x255MVik/zlcSZgSIqr2zikyR/9d9F9QEQr\nUXPthu3UwLXWJu+itfiOKDb5a2SY512MXaUDNntiZdSoL9IzV3vKOxNibyT3Ldmc\nf4FvBpF3cH+/SFjWi7Nu7u6xqQDotm/u3S61XaFlenTHwHvNezLtSU7xVFoFOGk+\nC0OTfLFXcEeRPujTpDC15PweBwlnwmmj7QjmJYI6Eq1dJ5JW5rrHLO1qYqZtfyG3\nl1PsGpxWHNJGTIyNjbQzcjdCCZBSdEVnICAU6m4RG33EXkjExPerlEhCcw8D703r\nWB8fgBc1n3wM/NZ3YXsHxTIcBTYFeIAzs3sGDKZ4cjxzktFIAUQ5aIMj9vc95et8\nTE8EiVpDDbL0SppmSawoA+/U+sx7t8Hh9m/HnGNAIULuj4CWYqvgM2/4ptSdpQfl\nzCKe4Hp1ACfcuOs/O5sj0PhosdOHKoLFki+Bf+wL5I83VpNnDHuEZ+zNF83JdcWL\ncd5hWWZ+EcW9GO3ITUKvBwKTKWB9wHCdyuAUTj6UrF1X4PYMvV5rK081gguefJH9\nh9RlBWy+5JDU2j7nt1Jrl4CM1v73LftCKmCC6bF8wPfl34MCAwEAAaN8MHowCQYD\nVR0TBAIwADAdBgNVHQ4EFgQUbFnI40k82TldvwpXAmngw+Gy4OYwHwYDVR0jBBgw\nFoAUa9IpV4tSNiwFCsZXuRp0eKwTH2YwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQW\nMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEAlMAVbb+M\nKx6ej6boH27b5fSZGCiXEanQ0u8uO1DeLJsagYwsb9EsCLQpVc5+M+rhMk++yVvr\n2Yb+UkTWfWcUwTcfLk3TEYe8X/8zqY+uDJOumNpSIgyF0kPeQ9KGNjaCZLa87Npb\n0dvXIabohJlEMGJt2/cAK19keC5VbxwKeSk95RUiSwgE8K4DbtyFUIIy8a1y+Mwu\nvlfIz/FVgQWlWjSZ0NUx7/oKgznDg5oRjiuD6yYM084soiW3RgxGQ/sxqUXJyc++\nFU3xwO3mVX1tjry/d42KRSxsLpM2+jAXawwzRWFjuFUExl1i1OgaGtU33MRo6siO\n0BPal3eBC5I7rGb8GOuYQmO5QLPpj8+sxCzqzKQOZ9ATLvdjM6v9EiRp5nuTXFh4\nV07qQ4hxs4KeRz9Oig5VpnHQ8/SGWFPV2TgEnPr3Lu6knNjvI8O9wwo1mF/Q3yUc\nHE1YdLJ9ctJ2KHbsPpWDO4Zk7+6LejkbscYzEOA2pUlQzpv1rZmOQcnhnhKHlppK\ni5ogPiczSIdmOqQ1jQNS7hzdWZCxpGdjsXtVrYRFUDRv9vqHieBSzuh/GI/PvW7d\nPNRKkMlItv+C4UczOBM1y3kMsHwFSvFfC++TBlA4PkSmtpgnMAXePUlck6H8irtD\naqeURSylqc7U1W1KbsDpI97UCxbVZnFPMhE=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFLTCCAxWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UEAwwVQXh1\nYWwgRHVtbXkgUm9vdCAyMDE4MB4XDTE4MDUyOTExMDEzNFoXDTI4MDUyNjExMDEz\nNFowKzEpMCcGA1UEAwwgQXh1YWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEw\nggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9uOuzJekmeo3hl8fjQlKS\nHApS3llcliq1YrXpkMbHAA9StHaMHPW+Dzr2/+cdfBAmN3sujCY8Paq15QI+TDOq\nKA5SByCBQKXx2qulBPcZs3mDMt+KxAaeWfwR4Nj0NNKbmw2HjDddo77joeVOuOX2\n4o1wXzmAAolVMIcRYA11EMWNUtYrHCzBa7RfYht2G5dE69ckrgfw1Nxs01Sbg+xP\nsK9aK/LHPUalYZNY+76x7vabEpzaPfpyKzDTWA20SPk0WfTf9/+K3o+urzDG8O/q\nw9xbBOzWohGmRyA/z841p1SD7inpZcyO/KeW1yTP2WyFxADwUrv2mEYXnma/Gdna\nG62IQYk/UMex9W8pT6tfwrg/36sSwr88yPR5dJxzjHUE+w/rYG3k+K+EqvZ5qOC5\n32AJ9BS2nbNuGpmRU1qoMCwpL7B2E/CKJLIdFcf/qmcnWJEXo+u34+fQZg8XaDCI\nXhUqAHz6YkjCiFGd/JwL1IqsfxFsV9wHTUbW2AumglU65ZrjhXrrzE7Hk9ng1spJ\ndOwfBihBNjnr0mKHY9leJ3chJ9HQ55/fEgcRNrj8EC69QCeAtpY5yOAjKpA03UvF\ngrDt8CIyIehNUwTXIhQSHZU4eZ0rzWf0vvMbhL2FvKtphbpnNKoXeNLv2IMZpT4B\nVwsqLqaIkl/I4FPpYBoSYwIDAQABo2YwZDAdBgNVHQ4EFgQUa9IpV4tSNiwFCsZX\nuRp0eKwTH2YwHwYDVR0jBBgwFoAUdKOPDqSFQ6Bfk0I/asBkByt5gsUwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIB\nAKoNIqiOdjlUBNg7cvR9Su4KgGrsZf78pG1H2MlNxJjFM/80EiWEfze/EG2MLxFq\n8vToIHDjb0kVetYpdmfHNXTTlaaroBlXwyUYToPzQ985qr3LD8RhYZFAsiZCTtpJ\n4FT6sh/mccTyx8G8+ZS6mn/le2WPj/t6beNLgbdl5n8fghdQcmT/TqGXE50UftWt\nHSx3fsq2aKuNdVzhKzTin50IbiE9DV1dKo6B+ipOy/Dz5GMv3Z/3ntLTvxabCMOl\n7s7WsUE7VPABRSifUS80Z9Ai38faLSu+Ouzx40ceXwvlFQtJ2LYQ8Ru5Q63k2wB3\nEOE6cgAhiYExrz3fDDtUkui9vIfWfTPMnXR7xQ8YqK4Qqld2ESxvMQU2jzbZKSf+\n3sWnPvN4HTg0cfysmOdLGZwf3u8A9tMtxhUEtxUx7r76M4ekSKdNv1Nf5u5N/h7b\nAbEqSp1XADTxkE448i7hNJzn2Ce6JtFya231Ni0xyYKQIajP18jNypAw1eABYFkN\n53vQTUfqcbtcrCios1xRdDqfgkYaKZv7p63aoObFTf/mmG7sFjGAEPQscagOukwN\nwnkjCVifVbk5qJUaUWSLeYziI+HYkEA9P/h4o83nbf0YgBtOFoc0XWKmKagHifZN\nSEJ9kRCWzYaL2ChiL6jHGh26WT/hbNKeAlcxPnT4u/l1\n-----END CERTIFICATE-----\n",
  "application" : "http://api.example.com/applications/39d82d7f34484b53ae1dd47ee8924512",
  "environment" : "http://api.example.com/environments/047ab08009fe4da8be6905b55552ab52"
}, {
  "principal" : "-----BEGIN CERTIFICATE-----\nMIIFhjCCA26gAwIBAgICECwwDQYJKoZIhvcNAQELBQAwKzEpMCcGA1UEAwwgQXh1\nYWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEwHhcNMTkwNjEzMTQwNTMyWhcN\nMjExMTI5MTQwNTMyWjBjMQswCQYDVQQGEwJOTDEQMA4GA1UECAwHVXRyZWNodDEQ\nMA4GA1UEBwwHVXRyZWNodDEOMAwGA1UECgwFQXh1YWwxDjAMBgNVBAsMBUF4dWFs\nMRAwDgYDVQQDDAd0ZXN0IENOMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\nAgEAnZaQX6aDGnNsua3DNlV/RI8BmjvpFaqOWNmWQYive6w8BTciuq+EeVUM6SGc\nST4YCFsuNFQjxYCiGMzFBp1kBWOY/x255MVik/zlcSZgSIqr2zikyR/9d9F9QEQr\nUXPthu3UwLXWJu+itfiOKDb5a2SY512MXaUDNntiZdSoL9IzV3vKOxNibyT3Ldmc\nf4FvBpF3cH+/SFjWi7Nu7u6xqQDotm/u3S61XaFlenTHwHvNezLtSU7xVFoFOGk+\nC0OTfLFXcEeRPujTpDC15PweBwlnwmmj7QjmJYI6Eq1dJ5JW5rrHLO1qYqZtfyG3\nl1PsGpxWHNJGTIyNjbQzcjdCCZBSdEVnICAU6m4RG33EXkjExPerlEhCcw8D703r\nWB8fgBc1n3wM/NZ3YXsHxTIcBTYFeIAzs3sGDKZ4cjxzktFIAUQ5aIMj9vc95et8\nTE8EiVpDDbL0SppmSawoA+/U+sx7t8Hh9m/HnGNAIULuj4CWYqvgM2/4ptSdpQfl\nzCKe4Hp1ACfcuOs/O5sj0PhosdOHKoLFki+Bf+wL5I83VpNnDHuEZ+zNF83JdcWL\ncd5hWWZ+EcW9GO3ITUKvBwKTKWB9wHCdyuAUTj6UrF1X4PYMvV5rK081gguefJH9\nh9RlBWy+5JDU2j7nt1Jrl4CM1v73LftCKmCC6bF8wPfl34MCAwEAAaN8MHowCQYD\nVR0TBAIwADAdBgNVHQ4EFgQUbFnI40k82TldvwpXAmngw+Gy4OYwHwYDVR0jBBgw\nFoAUa9IpV4tSNiwFCsZXuRp0eKwTH2YwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQW\nMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEAlMAVbb+M\nKx6ej6boH27b5fSZGCiXEanQ0u8uO1DeLJsagYwsb9EsCLQpVc5+M+rhMk++yVvr\n2Yb+UkTWfWcUwTcfLk3TEYe8X/8zqY+uDJOumNpSIgyF0kPeQ9KGNjaCZLa87Npb\n0dvXIabohJlEMGJt2/cAK19keC5VbxwKeSk95RUiSwgE8K4DbtyFUIIy8a1y+Mwu\nvlfIz/FVgQWlWjSZ0NUx7/oKgznDg5oRjiuD6yYM084soiW3RgxGQ/sxqUXJyc++\nFU3xwO3mVX1tjry/d42KRSxsLpM2+jAXawwzRWFjuFUExl1i1OgaGtU33MRo6siO\n0BPal3eBC5I7rGb8GOuYQmO5QLPpj8+sxCzqzKQOZ9ATLvdjM6v9EiRp5nuTXFh4\nV07qQ4hxs4KeRz9Oig5VpnHQ8/SGWFPV2TgEnPr3Lu6knNjvI8O9wwo1mF/Q3yUc\nHE1YdLJ9ctJ2KHbsPpWDO4Zk7+6LejkbscYzEOA2pUlQzpv1rZmOQcnhnhKHlppK\ni5ogPiczSIdmOqQ1jQNS7hzdWZCxpGdjsXtVrYRFUDRv9vqHieBSzuh/GI/PvW7d\nPNRKkMlItv+C4UczOBM1y3kMsHwFSvFfC++TBlA4PkSmtpgnMAXePUlck6H8irtD\naqeURSylqc7U1W1KbsDpI97UCxbVZnFPMhE=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFLTCCAxWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UEAwwVQXh1\nYWwgRHVtbXkgUm9vdCAyMDE4MB4XDTE4MDUyOTExMDEzNFoXDTI4MDUyNjExMDEz\nNFowKzEpMCcGA1UEAwwgQXh1YWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEw\nggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9uOuzJekmeo3hl8fjQlKS\nHApS3llcliq1YrXpkMbHAA9StHaMHPW+Dzr2/+cdfBAmN3sujCY8Paq15QI+TDOq\nKA5SByCBQKXx2qulBPcZs3mDMt+KxAaeWfwR4Nj0NNKbmw2HjDddo77joeVOuOX2\n4o1wXzmAAolVMIcRYA11EMWNUtYrHCzBa7RfYht2G5dE69ckrgfw1Nxs01Sbg+xP\nsK9aK/LHPUalYZNY+76x7vabEpzaPfpyKzDTWA20SPk0WfTf9/+K3o+urzDG8O/q\nw9xbBOzWohGmRyA/z841p1SD7inpZcyO/KeW1yTP2WyFxADwUrv2mEYXnma/Gdna\nG62IQYk/UMex9W8pT6tfwrg/36sSwr88yPR5dJxzjHUE+w/rYG3k+K+EqvZ5qOC5\n32AJ9BS2nbNuGpmRU1qoMCwpL7B2E/CKJLIdFcf/qmcnWJEXo+u34+fQZg8XaDCI\nXhUqAHz6YkjCiFGd/JwL1IqsfxFsV9wHTUbW2AumglU65ZrjhXrrzE7Hk9ng1spJ\ndOwfBihBNjnr0mKHY9leJ3chJ9HQ55/fEgcRNrj8EC69QCeAtpY5yOAjKpA03UvF\ngrDt8CIyIehNUwTXIhQSHZU4eZ0rzWf0vvMbhL2FvKtphbpnNKoXeNLv2IMZpT4B\nVwsqLqaIkl/I4FPpYBoSYwIDAQABo2YwZDAdBgNVHQ4EFgQUa9IpV4tSNiwFCsZX\nuRp0eKwTH2YwHwYDVR0jBBgwFoAUdKOPDqSFQ6Bfk0I/asBkByt5gsUwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIB\nAKoNIqiOdjlUBNg7cvR9Su4KgGrsZf78pG1H2MlNxJjFM/80EiWEfze/EG2MLxFq\n8vToIHDjb0kVetYpdmfHNXTTlaaroBlXwyUYToPzQ985qr3LD8RhYZFAsiZCTtpJ\n4FT6sh/mccTyx8G8+ZS6mn/le2WPj/t6beNLgbdl5n8fghdQcmT/TqGXE50UftWt\nHSx3fsq2aKuNdVzhKzTin50IbiE9DV1dKo6B+ipOy/Dz5GMv3Z/3ntLTvxabCMOl\n7s7WsUE7VPABRSifUS80Z9Ai38faLSu+Ouzx40ceXwvlFQtJ2LYQ8Ru5Q63k2wB3\nEOE6cgAhiYExrz3fDDtUkui9vIfWfTPMnXR7xQ8YqK4Qqld2ESxvMQU2jzbZKSf+\n3sWnPvN4HTg0cfysmOdLGZwf3u8A9tMtxhUEtxUx7r76M4ekSKdNv1Nf5u5N/h7b\nAbEqSp1XADTxkE448i7hNJzn2Ce6JtFya231Ni0xyYKQIajP18jNypAw1eABYFkN\n53vQTUfqcbtcrCios1xRdDqfgkYaKZv7p63aoObFTf/mmG7sFjGAEPQscagOukwN\nwnkjCVifVbk5qJUaUWSLeYziI+HYkEA9P/h4o83nbf0YgBtOFoc0XWKmKagHifZN\nSEJ9kRCWzYaL2ChiL6jHGh26WT/hbNKeAlcxPnT4u/l1\n-----END CERTIFICATE-----\n",
  "application" : "http://api.example.com/applications/39d82d7f34484b53ae1dd47ee8924512",
  "environment" : "http://api.example.com/environments/047ab08009fe4da8be6905b55552ab52"
}, {
  "principal" : "-----BEGIN CERTIFICATE-----\nMIIFhjCCA26gAwIBAgICECwwDQYJKoZIhvcNAQELBQAwKzEpMCcGA1UEAwwgQXh1\nYWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEwHhcNMTkwNjEzMTQwNTMyWhcN\nMjExMTI5MTQwNTMyWjBjMQswCQYDVQQGEwJOTDEQMA4GA1UECAwHVXRyZWNodDEQ\nMA4GA1UEBwwHVXRyZWNodDEOMAwGA1UECgwFQXh1YWwxDjAMBgNVBAsMBUF4dWFs\nMRAwDgYDVQQDDAd0ZXN0IENOMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\nAgEAnZaQX6aDGnNsua3DNlV/RI8BmjvpFaqOWNmWQYive6w8BTciuq+EeVUM6SGc\nST4YCFsuNFQjxYCiGMzFBp1kBWOY/x255MVik/zlcSZgSIqr2zikyR/9d9F9QEQr\nUXPthu3UwLXWJu+itfiOKDb5a2SY512MXaUDNntiZdSoL9IzV3vKOxNibyT3Ldmc\nf4FvBpF3cH+/SFjWi7Nu7u6xqQDotm/u3S61XaFlenTHwHvNezLtSU7xVFoFOGk+\nC0OTfLFXcEeRPujTpDC15PweBwlnwmmj7QjmJYI6Eq1dJ5JW5rrHLO1qYqZtfyG3\nl1PsGpxWHNJGTIyNjbQzcjdCCZBSdEVnICAU6m4RG33EXkjExPerlEhCcw8D703r\nWB8fgBc1n3wM/NZ3YXsHxTIcBTYFeIAzs3sGDKZ4cjxzktFIAUQ5aIMj9vc95et8\nTE8EiVpDDbL0SppmSawoA+/U+sx7t8Hh9m/HnGNAIULuj4CWYqvgM2/4ptSdpQfl\nzCKe4Hp1ACfcuOs/O5sj0PhosdOHKoLFki+Bf+wL5I83VpNnDHuEZ+zNF83JdcWL\ncd5hWWZ+EcW9GO3ITUKvBwKTKWB9wHCdyuAUTj6UrF1X4PYMvV5rK081gguefJH9\nh9RlBWy+5JDU2j7nt1Jrl4CM1v73LftCKmCC6bF8wPfl34MCAwEAAaN8MHowCQYD\nVR0TBAIwADAdBgNVHQ4EFgQUbFnI40k82TldvwpXAmngw+Gy4OYwHwYDVR0jBBgw\nFoAUa9IpV4tSNiwFCsZXuRp0eKwTH2YwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQW\nMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEAlMAVbb+M\nKx6ej6boH27b5fSZGCiXEanQ0u8uO1DeLJsagYwsb9EsCLQpVc5+M+rhMk++yVvr\n2Yb+UkTWfWcUwTcfLk3TEYe8X/8zqY+uDJOumNpSIgyF0kPeQ9KGNjaCZLa87Npb\n0dvXIabohJlEMGJt2/cAK19keC5VbxwKeSk95RUiSwgE8K4DbtyFUIIy8a1y+Mwu\nvlfIz/FVgQWlWjSZ0NUx7/oKgznDg5oRjiuD6yYM084soiW3RgxGQ/sxqUXJyc++\nFU3xwO3mVX1tjry/d42KRSxsLpM2+jAXawwzRWFjuFUExl1i1OgaGtU33MRo6siO\n0BPal3eBC5I7rGb8GOuYQmO5QLPpj8+sxCzqzKQOZ9ATLvdjM6v9EiRp5nuTXFh4\nV07qQ4hxs4KeRz9Oig5VpnHQ8/SGWFPV2TgEnPr3Lu6knNjvI8O9wwo1mF/Q3yUc\nHE1YdLJ9ctJ2KHbsPpWDO4Zk7+6LejkbscYzEOA2pUlQzpv1rZmOQcnhnhKHlppK\ni5ogPiczSIdmOqQ1jQNS7hzdWZCxpGdjsXtVrYRFUDRv9vqHieBSzuh/GI/PvW7d\nPNRKkMlItv+C4UczOBM1y3kMsHwFSvFfC++TBlA4PkSmtpgnMAXePUlck6H8irtD\naqeURSylqc7U1W1KbsDpI97UCxbVZnFPMhE=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFLTCCAxWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UEAwwVQXh1\nYWwgRHVtbXkgUm9vdCAyMDE4MB4XDTE4MDUyOTExMDEzNFoXDTI4MDUyNjExMDEz\nNFowKzEpMCcGA1UEAwwgQXh1YWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEw\nggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9uOuzJekmeo3hl8fjQlKS\nHApS3llcliq1YrXpkMbHAA9StHaMHPW+Dzr2/+cdfBAmN3sujCY8Paq15QI+TDOq\nKA5SByCBQKXx2qulBPcZs3mDMt+KxAaeWfwR4Nj0NNKbmw2HjDddo77joeVOuOX2\n4o1wXzmAAolVMIcRYA11EMWNUtYrHCzBa7RfYht2G5dE69ckrgfw1Nxs01Sbg+xP\nsK9aK/LHPUalYZNY+76x7vabEpzaPfpyKzDTWA20SPk0WfTf9/+K3o+urzDG8O/q\nw9xbBOzWohGmRyA/z841p1SD7inpZcyO/KeW1yTP2WyFxADwUrv2mEYXnma/Gdna\nG62IQYk/UMex9W8pT6tfwrg/36sSwr88yPR5dJxzjHUE+w/rYG3k+K+EqvZ5qOC5\n32AJ9BS2nbNuGpmRU1qoMCwpL7B2E/CKJLIdFcf/qmcnWJEXo+u34+fQZg8XaDCI\nXhUqAHz6YkjCiFGd/JwL1IqsfxFsV9wHTUbW2AumglU65ZrjhXrrzE7Hk9ng1spJ\ndOwfBihBNjnr0mKHY9leJ3chJ9HQ55/fEgcRNrj8EC69QCeAtpY5yOAjKpA03UvF\ngrDt8CIyIehNUwTXIhQSHZU4eZ0rzWf0vvMbhL2FvKtphbpnNKoXeNLv2IMZpT4B\nVwsqLqaIkl/I4FPpYBoSYwIDAQABo2YwZDAdBgNVHQ4EFgQUa9IpV4tSNiwFCsZX\nuRp0eKwTH2YwHwYDVR0jBBgwFoAUdKOPDqSFQ6Bfk0I/asBkByt5gsUwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIB\nAKoNIqiOdjlUBNg7cvR9Su4KgGrsZf78pG1H2MlNxJjFM/80EiWEfze/EG2MLxFq\n8vToIHDjb0kVetYpdmfHNXTTlaaroBlXwyUYToPzQ985qr3LD8RhYZFAsiZCTtpJ\n4FT6sh/mccTyx8G8+ZS6mn/le2WPj/t6beNLgbdl5n8fghdQcmT/TqGXE50UftWt\nHSx3fsq2aKuNdVzhKzTin50IbiE9DV1dKo6B+ipOy/Dz5GMv3Z/3ntLTvxabCMOl\n7s7WsUE7VPABRSifUS80Z9Ai38faLSu+Ouzx40ceXwvlFQtJ2LYQ8Ru5Q63k2wB3\nEOE6cgAhiYExrz3fDDtUkui9vIfWfTPMnXR7xQ8YqK4Qqld2ESxvMQU2jzbZKSf+\n3sWnPvN4HTg0cfysmOdLGZwf3u8A9tMtxhUEtxUx7r76M4ekSKdNv1Nf5u5N/h7b\nAbEqSp1XADTxkE448i7hNJzn2Ce6JtFya231Ni0xyYKQIajP18jNypAw1eABYFkN\n53vQTUfqcbtcrCios1xRdDqfgkYaKZv7p63aoObFTf/mmG7sFjGAEPQscagOukwN\nwnkjCVifVbk5qJUaUWSLeYziI+HYkEA9P/h4o83nbf0YgBtOFoc0XWKmKagHifZN\nSEJ9kRCWzYaL2ChiL6jHGh26WT/hbNKeAlcxPnT4u/l1\n-----END CERTIFICATE-----\n",
  "application" : "http://api.example.com/applications/39d82d7f34484b53ae1dd47ee8924512",
  "environment" : "http://api.example.com/environments/047ab08009fe4da8be6905b55552ab52"
} ]'

HTTP request

POST /application_principals/ HTTP/1.1
Content-Length: 12290
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

[ {
  "principal" : "-----BEGIN CERTIFICATE-----\nMIIFhjCCA26gAwIBAgICECwwDQYJKoZIhvcNAQELBQAwKzEpMCcGA1UEAwwgQXh1\nYWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEwHhcNMTkwNjEzMTQwNTMyWhcN\nMjExMTI5MTQwNTMyWjBjMQswCQYDVQQGEwJOTDEQMA4GA1UECAwHVXRyZWNodDEQ\nMA4GA1UEBwwHVXRyZWNodDEOMAwGA1UECgwFQXh1YWwxDjAMBgNVBAsMBUF4dWFs\nMRAwDgYDVQQDDAd0ZXN0IENOMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\nAgEAnZaQX6aDGnNsua3DNlV/RI8BmjvpFaqOWNmWQYive6w8BTciuq+EeVUM6SGc\nST4YCFsuNFQjxYCiGMzFBp1kBWOY/x255MVik/zlcSZgSIqr2zikyR/9d9F9QEQr\nUXPthu3UwLXWJu+itfiOKDb5a2SY512MXaUDNntiZdSoL9IzV3vKOxNibyT3Ldmc\nf4FvBpF3cH+/SFjWi7Nu7u6xqQDotm/u3S61XaFlenTHwHvNezLtSU7xVFoFOGk+\nC0OTfLFXcEeRPujTpDC15PweBwlnwmmj7QjmJYI6Eq1dJ5JW5rrHLO1qYqZtfyG3\nl1PsGpxWHNJGTIyNjbQzcjdCCZBSdEVnICAU6m4RG33EXkjExPerlEhCcw8D703r\nWB8fgBc1n3wM/NZ3YXsHxTIcBTYFeIAzs3sGDKZ4cjxzktFIAUQ5aIMj9vc95et8\nTE8EiVpDDbL0SppmSawoA+/U+sx7t8Hh9m/HnGNAIULuj4CWYqvgM2/4ptSdpQfl\nzCKe4Hp1ACfcuOs/O5sj0PhosdOHKoLFki+Bf+wL5I83VpNnDHuEZ+zNF83JdcWL\ncd5hWWZ+EcW9GO3ITUKvBwKTKWB9wHCdyuAUTj6UrF1X4PYMvV5rK081gguefJH9\nh9RlBWy+5JDU2j7nt1Jrl4CM1v73LftCKmCC6bF8wPfl34MCAwEAAaN8MHowCQYD\nVR0TBAIwADAdBgNVHQ4EFgQUbFnI40k82TldvwpXAmngw+Gy4OYwHwYDVR0jBBgw\nFoAUa9IpV4tSNiwFCsZXuRp0eKwTH2YwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQW\nMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEAlMAVbb+M\nKx6ej6boH27b5fSZGCiXEanQ0u8uO1DeLJsagYwsb9EsCLQpVc5+M+rhMk++yVvr\n2Yb+UkTWfWcUwTcfLk3TEYe8X/8zqY+uDJOumNpSIgyF0kPeQ9KGNjaCZLa87Npb\n0dvXIabohJlEMGJt2/cAK19keC5VbxwKeSk95RUiSwgE8K4DbtyFUIIy8a1y+Mwu\nvlfIz/FVgQWlWjSZ0NUx7/oKgznDg5oRjiuD6yYM084soiW3RgxGQ/sxqUXJyc++\nFU3xwO3mVX1tjry/d42KRSxsLpM2+jAXawwzRWFjuFUExl1i1OgaGtU33MRo6siO\n0BPal3eBC5I7rGb8GOuYQmO5QLPpj8+sxCzqzKQOZ9ATLvdjM6v9EiRp5nuTXFh4\nV07qQ4hxs4KeRz9Oig5VpnHQ8/SGWFPV2TgEnPr3Lu6knNjvI8O9wwo1mF/Q3yUc\nHE1YdLJ9ctJ2KHbsPpWDO4Zk7+6LejkbscYzEOA2pUlQzpv1rZmOQcnhnhKHlppK\ni5ogPiczSIdmOqQ1jQNS7hzdWZCxpGdjsXtVrYRFUDRv9vqHieBSzuh/GI/PvW7d\nPNRKkMlItv+C4UczOBM1y3kMsHwFSvFfC++TBlA4PkSmtpgnMAXePUlck6H8irtD\naqeURSylqc7U1W1KbsDpI97UCxbVZnFPMhE=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFLTCCAxWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UEAwwVQXh1\nYWwgRHVtbXkgUm9vdCAyMDE4MB4XDTE4MDUyOTExMDEzNFoXDTI4MDUyNjExMDEz\nNFowKzEpMCcGA1UEAwwgQXh1YWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEw\nggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9uOuzJekmeo3hl8fjQlKS\nHApS3llcliq1YrXpkMbHAA9StHaMHPW+Dzr2/+cdfBAmN3sujCY8Paq15QI+TDOq\nKA5SByCBQKXx2qulBPcZs3mDMt+KxAaeWfwR4Nj0NNKbmw2HjDddo77joeVOuOX2\n4o1wXzmAAolVMIcRYA11EMWNUtYrHCzBa7RfYht2G5dE69ckrgfw1Nxs01Sbg+xP\nsK9aK/LHPUalYZNY+76x7vabEpzaPfpyKzDTWA20SPk0WfTf9/+K3o+urzDG8O/q\nw9xbBOzWohGmRyA/z841p1SD7inpZcyO/KeW1yTP2WyFxADwUrv2mEYXnma/Gdna\nG62IQYk/UMex9W8pT6tfwrg/36sSwr88yPR5dJxzjHUE+w/rYG3k+K+EqvZ5qOC5\n32AJ9BS2nbNuGpmRU1qoMCwpL7B2E/CKJLIdFcf/qmcnWJEXo+u34+fQZg8XaDCI\nXhUqAHz6YkjCiFGd/JwL1IqsfxFsV9wHTUbW2AumglU65ZrjhXrrzE7Hk9ng1spJ\ndOwfBihBNjnr0mKHY9leJ3chJ9HQ55/fEgcRNrj8EC69QCeAtpY5yOAjKpA03UvF\ngrDt8CIyIehNUwTXIhQSHZU4eZ0rzWf0vvMbhL2FvKtphbpnNKoXeNLv2IMZpT4B\nVwsqLqaIkl/I4FPpYBoSYwIDAQABo2YwZDAdBgNVHQ4EFgQUa9IpV4tSNiwFCsZX\nuRp0eKwTH2YwHwYDVR0jBBgwFoAUdKOPDqSFQ6Bfk0I/asBkByt5gsUwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIB\nAKoNIqiOdjlUBNg7cvR9Su4KgGrsZf78pG1H2MlNxJjFM/80EiWEfze/EG2MLxFq\n8vToIHDjb0kVetYpdmfHNXTTlaaroBlXwyUYToPzQ985qr3LD8RhYZFAsiZCTtpJ\n4FT6sh/mccTyx8G8+ZS6mn/le2WPj/t6beNLgbdl5n8fghdQcmT/TqGXE50UftWt\nHSx3fsq2aKuNdVzhKzTin50IbiE9DV1dKo6B+ipOy/Dz5GMv3Z/3ntLTvxabCMOl\n7s7WsUE7VPABRSifUS80Z9Ai38faLSu+Ouzx40ceXwvlFQtJ2LYQ8Ru5Q63k2wB3\nEOE6cgAhiYExrz3fDDtUkui9vIfWfTPMnXR7xQ8YqK4Qqld2ESxvMQU2jzbZKSf+\n3sWnPvN4HTg0cfysmOdLGZwf3u8A9tMtxhUEtxUx7r76M4ekSKdNv1Nf5u5N/h7b\nAbEqSp1XADTxkE448i7hNJzn2Ce6JtFya231Ni0xyYKQIajP18jNypAw1eABYFkN\n53vQTUfqcbtcrCios1xRdDqfgkYaKZv7p63aoObFTf/mmG7sFjGAEPQscagOukwN\nwnkjCVifVbk5qJUaUWSLeYziI+HYkEA9P/h4o83nbf0YgBtOFoc0XWKmKagHifZN\nSEJ9kRCWzYaL2ChiL6jHGh26WT/hbNKeAlcxPnT4u/l1\n-----END CERTIFICATE-----\n",
  "application" : "http://api.example.com/applications/39d82d7f34484b53ae1dd47ee8924512",
  "environment" : "http://api.example.com/environments/047ab08009fe4da8be6905b55552ab52"
}, {
  "principal" : "-----BEGIN CERTIFICATE-----\nMIIFhjCCA26gAwIBAgICECwwDQYJKoZIhvcNAQELBQAwKzEpMCcGA1UEAwwgQXh1\nYWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEwHhcNMTkwNjEzMTQwNTMyWhcN\nMjExMTI5MTQwNTMyWjBjMQswCQYDVQQGEwJOTDEQMA4GA1UECAwHVXRyZWNodDEQ\nMA4GA1UEBwwHVXRyZWNodDEOMAwGA1UECgwFQXh1YWwxDjAMBgNVBAsMBUF4dWFs\nMRAwDgYDVQQDDAd0ZXN0IENOMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\nAgEAnZaQX6aDGnNsua3DNlV/RI8BmjvpFaqOWNmWQYive6w8BTciuq+EeVUM6SGc\nST4YCFsuNFQjxYCiGMzFBp1kBWOY/x255MVik/zlcSZgSIqr2zikyR/9d9F9QEQr\nUXPthu3UwLXWJu+itfiOKDb5a2SY512MXaUDNntiZdSoL9IzV3vKOxNibyT3Ldmc\nf4FvBpF3cH+/SFjWi7Nu7u6xqQDotm/u3S61XaFlenTHwHvNezLtSU7xVFoFOGk+\nC0OTfLFXcEeRPujTpDC15PweBwlnwmmj7QjmJYI6Eq1dJ5JW5rrHLO1qYqZtfyG3\nl1PsGpxWHNJGTIyNjbQzcjdCCZBSdEVnICAU6m4RG33EXkjExPerlEhCcw8D703r\nWB8fgBc1n3wM/NZ3YXsHxTIcBTYFeIAzs3sGDKZ4cjxzktFIAUQ5aIMj9vc95et8\nTE8EiVpDDbL0SppmSawoA+/U+sx7t8Hh9m/HnGNAIULuj4CWYqvgM2/4ptSdpQfl\nzCKe4Hp1ACfcuOs/O5sj0PhosdOHKoLFki+Bf+wL5I83VpNnDHuEZ+zNF83JdcWL\ncd5hWWZ+EcW9GO3ITUKvBwKTKWB9wHCdyuAUTj6UrF1X4PYMvV5rK081gguefJH9\nh9RlBWy+5JDU2j7nt1Jrl4CM1v73LftCKmCC6bF8wPfl34MCAwEAAaN8MHowCQYD\nVR0TBAIwADAdBgNVHQ4EFgQUbFnI40k82TldvwpXAmngw+Gy4OYwHwYDVR0jBBgw\nFoAUa9IpV4tSNiwFCsZXuRp0eKwTH2YwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQW\nMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEAlMAVbb+M\nKx6ej6boH27b5fSZGCiXEanQ0u8uO1DeLJsagYwsb9EsCLQpVc5+M+rhMk++yVvr\n2Yb+UkTWfWcUwTcfLk3TEYe8X/8zqY+uDJOumNpSIgyF0kPeQ9KGNjaCZLa87Npb\n0dvXIabohJlEMGJt2/cAK19keC5VbxwKeSk95RUiSwgE8K4DbtyFUIIy8a1y+Mwu\nvlfIz/FVgQWlWjSZ0NUx7/oKgznDg5oRjiuD6yYM084soiW3RgxGQ/sxqUXJyc++\nFU3xwO3mVX1tjry/d42KRSxsLpM2+jAXawwzRWFjuFUExl1i1OgaGtU33MRo6siO\n0BPal3eBC5I7rGb8GOuYQmO5QLPpj8+sxCzqzKQOZ9ATLvdjM6v9EiRp5nuTXFh4\nV07qQ4hxs4KeRz9Oig5VpnHQ8/SGWFPV2TgEnPr3Lu6knNjvI8O9wwo1mF/Q3yUc\nHE1YdLJ9ctJ2KHbsPpWDO4Zk7+6LejkbscYzEOA2pUlQzpv1rZmOQcnhnhKHlppK\ni5ogPiczSIdmOqQ1jQNS7hzdWZCxpGdjsXtVrYRFUDRv9vqHieBSzuh/GI/PvW7d\nPNRKkMlItv+C4UczOBM1y3kMsHwFSvFfC++TBlA4PkSmtpgnMAXePUlck6H8irtD\naqeURSylqc7U1W1KbsDpI97UCxbVZnFPMhE=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFLTCCAxWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UEAwwVQXh1\nYWwgRHVtbXkgUm9vdCAyMDE4MB4XDTE4MDUyOTExMDEzNFoXDTI4MDUyNjExMDEz\nNFowKzEpMCcGA1UEAwwgQXh1YWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEw\nggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9uOuzJekmeo3hl8fjQlKS\nHApS3llcliq1YrXpkMbHAA9StHaMHPW+Dzr2/+cdfBAmN3sujCY8Paq15QI+TDOq\nKA5SByCBQKXx2qulBPcZs3mDMt+KxAaeWfwR4Nj0NNKbmw2HjDddo77joeVOuOX2\n4o1wXzmAAolVMIcRYA11EMWNUtYrHCzBa7RfYht2G5dE69ckrgfw1Nxs01Sbg+xP\nsK9aK/LHPUalYZNY+76x7vabEpzaPfpyKzDTWA20SPk0WfTf9/+K3o+urzDG8O/q\nw9xbBOzWohGmRyA/z841p1SD7inpZcyO/KeW1yTP2WyFxADwUrv2mEYXnma/Gdna\nG62IQYk/UMex9W8pT6tfwrg/36sSwr88yPR5dJxzjHUE+w/rYG3k+K+EqvZ5qOC5\n32AJ9BS2nbNuGpmRU1qoMCwpL7B2E/CKJLIdFcf/qmcnWJEXo+u34+fQZg8XaDCI\nXhUqAHz6YkjCiFGd/JwL1IqsfxFsV9wHTUbW2AumglU65ZrjhXrrzE7Hk9ng1spJ\ndOwfBihBNjnr0mKHY9leJ3chJ9HQ55/fEgcRNrj8EC69QCeAtpY5yOAjKpA03UvF\ngrDt8CIyIehNUwTXIhQSHZU4eZ0rzWf0vvMbhL2FvKtphbpnNKoXeNLv2IMZpT4B\nVwsqLqaIkl/I4FPpYBoSYwIDAQABo2YwZDAdBgNVHQ4EFgQUa9IpV4tSNiwFCsZX\nuRp0eKwTH2YwHwYDVR0jBBgwFoAUdKOPDqSFQ6Bfk0I/asBkByt5gsUwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIB\nAKoNIqiOdjlUBNg7cvR9Su4KgGrsZf78pG1H2MlNxJjFM/80EiWEfze/EG2MLxFq\n8vToIHDjb0kVetYpdmfHNXTTlaaroBlXwyUYToPzQ985qr3LD8RhYZFAsiZCTtpJ\n4FT6sh/mccTyx8G8+ZS6mn/le2WPj/t6beNLgbdl5n8fghdQcmT/TqGXE50UftWt\nHSx3fsq2aKuNdVzhKzTin50IbiE9DV1dKo6B+ipOy/Dz5GMv3Z/3ntLTvxabCMOl\n7s7WsUE7VPABRSifUS80Z9Ai38faLSu+Ouzx40ceXwvlFQtJ2LYQ8Ru5Q63k2wB3\nEOE6cgAhiYExrz3fDDtUkui9vIfWfTPMnXR7xQ8YqK4Qqld2ESxvMQU2jzbZKSf+\n3sWnPvN4HTg0cfysmOdLGZwf3u8A9tMtxhUEtxUx7r76M4ekSKdNv1Nf5u5N/h7b\nAbEqSp1XADTxkE448i7hNJzn2Ce6JtFya231Ni0xyYKQIajP18jNypAw1eABYFkN\n53vQTUfqcbtcrCios1xRdDqfgkYaKZv7p63aoObFTf/mmG7sFjGAEPQscagOukwN\nwnkjCVifVbk5qJUaUWSLeYziI+HYkEA9P/h4o83nbf0YgBtOFoc0XWKmKagHifZN\nSEJ9kRCWzYaL2ChiL6jHGh26WT/hbNKeAlcxPnT4u/l1\n-----END CERTIFICATE-----\n",
  "application" : "http://api.example.com/applications/39d82d7f34484b53ae1dd47ee8924512",
  "environment" : "http://api.example.com/environments/047ab08009fe4da8be6905b55552ab52"
}, {
  "principal" : "-----BEGIN CERTIFICATE-----\nMIIFhjCCA26gAwIBAgICECwwDQYJKoZIhvcNAQELBQAwKzEpMCcGA1UEAwwgQXh1\nYWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEwHhcNMTkwNjEzMTQwNTMyWhcN\nMjExMTI5MTQwNTMyWjBjMQswCQYDVQQGEwJOTDEQMA4GA1UECAwHVXRyZWNodDEQ\nMA4GA1UEBwwHVXRyZWNodDEOMAwGA1UECgwFQXh1YWwxDjAMBgNVBAsMBUF4dWFs\nMRAwDgYDVQQDDAd0ZXN0IENOMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\nAgEAnZaQX6aDGnNsua3DNlV/RI8BmjvpFaqOWNmWQYive6w8BTciuq+EeVUM6SGc\nST4YCFsuNFQjxYCiGMzFBp1kBWOY/x255MVik/zlcSZgSIqr2zikyR/9d9F9QEQr\nUXPthu3UwLXWJu+itfiOKDb5a2SY512MXaUDNntiZdSoL9IzV3vKOxNibyT3Ldmc\nf4FvBpF3cH+/SFjWi7Nu7u6xqQDotm/u3S61XaFlenTHwHvNezLtSU7xVFoFOGk+\nC0OTfLFXcEeRPujTpDC15PweBwlnwmmj7QjmJYI6Eq1dJ5JW5rrHLO1qYqZtfyG3\nl1PsGpxWHNJGTIyNjbQzcjdCCZBSdEVnICAU6m4RG33EXkjExPerlEhCcw8D703r\nWB8fgBc1n3wM/NZ3YXsHxTIcBTYFeIAzs3sGDKZ4cjxzktFIAUQ5aIMj9vc95et8\nTE8EiVpDDbL0SppmSawoA+/U+sx7t8Hh9m/HnGNAIULuj4CWYqvgM2/4ptSdpQfl\nzCKe4Hp1ACfcuOs/O5sj0PhosdOHKoLFki+Bf+wL5I83VpNnDHuEZ+zNF83JdcWL\ncd5hWWZ+EcW9GO3ITUKvBwKTKWB9wHCdyuAUTj6UrF1X4PYMvV5rK081gguefJH9\nh9RlBWy+5JDU2j7nt1Jrl4CM1v73LftCKmCC6bF8wPfl34MCAwEAAaN8MHowCQYD\nVR0TBAIwADAdBgNVHQ4EFgQUbFnI40k82TldvwpXAmngw+Gy4OYwHwYDVR0jBBgw\nFoAUa9IpV4tSNiwFCsZXuRp0eKwTH2YwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQW\nMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEAlMAVbb+M\nKx6ej6boH27b5fSZGCiXEanQ0u8uO1DeLJsagYwsb9EsCLQpVc5+M+rhMk++yVvr\n2Yb+UkTWfWcUwTcfLk3TEYe8X/8zqY+uDJOumNpSIgyF0kPeQ9KGNjaCZLa87Npb\n0dvXIabohJlEMGJt2/cAK19keC5VbxwKeSk95RUiSwgE8K4DbtyFUIIy8a1y+Mwu\nvlfIz/FVgQWlWjSZ0NUx7/oKgznDg5oRjiuD6yYM084soiW3RgxGQ/sxqUXJyc++\nFU3xwO3mVX1tjry/d42KRSxsLpM2+jAXawwzRWFjuFUExl1i1OgaGtU33MRo6siO\n0BPal3eBC5I7rGb8GOuYQmO5QLPpj8+sxCzqzKQOZ9ATLvdjM6v9EiRp5nuTXFh4\nV07qQ4hxs4KeRz9Oig5VpnHQ8/SGWFPV2TgEnPr3Lu6knNjvI8O9wwo1mF/Q3yUc\nHE1YdLJ9ctJ2KHbsPpWDO4Zk7+6LejkbscYzEOA2pUlQzpv1rZmOQcnhnhKHlppK\ni5ogPiczSIdmOqQ1jQNS7hzdWZCxpGdjsXtVrYRFUDRv9vqHieBSzuh/GI/PvW7d\nPNRKkMlItv+C4UczOBM1y3kMsHwFSvFfC++TBlA4PkSmtpgnMAXePUlck6H8irtD\naqeURSylqc7U1W1KbsDpI97UCxbVZnFPMhE=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFLTCCAxWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UEAwwVQXh1\nYWwgRHVtbXkgUm9vdCAyMDE4MB4XDTE4MDUyOTExMDEzNFoXDTI4MDUyNjExMDEz\nNFowKzEpMCcGA1UEAwwgQXh1YWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEw\nggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9uOuzJekmeo3hl8fjQlKS\nHApS3llcliq1YrXpkMbHAA9StHaMHPW+Dzr2/+cdfBAmN3sujCY8Paq15QI+TDOq\nKA5SByCBQKXx2qulBPcZs3mDMt+KxAaeWfwR4Nj0NNKbmw2HjDddo77joeVOuOX2\n4o1wXzmAAolVMIcRYA11EMWNUtYrHCzBa7RfYht2G5dE69ckrgfw1Nxs01Sbg+xP\nsK9aK/LHPUalYZNY+76x7vabEpzaPfpyKzDTWA20SPk0WfTf9/+K3o+urzDG8O/q\nw9xbBOzWohGmRyA/z841p1SD7inpZcyO/KeW1yTP2WyFxADwUrv2mEYXnma/Gdna\nG62IQYk/UMex9W8pT6tfwrg/36sSwr88yPR5dJxzjHUE+w/rYG3k+K+EqvZ5qOC5\n32AJ9BS2nbNuGpmRU1qoMCwpL7B2E/CKJLIdFcf/qmcnWJEXo+u34+fQZg8XaDCI\nXhUqAHz6YkjCiFGd/JwL1IqsfxFsV9wHTUbW2AumglU65ZrjhXrrzE7Hk9ng1spJ\ndOwfBihBNjnr0mKHY9leJ3chJ9HQ55/fEgcRNrj8EC69QCeAtpY5yOAjKpA03UvF\ngrDt8CIyIehNUwTXIhQSHZU4eZ0rzWf0vvMbhL2FvKtphbpnNKoXeNLv2IMZpT4B\nVwsqLqaIkl/I4FPpYBoSYwIDAQABo2YwZDAdBgNVHQ4EFgQUa9IpV4tSNiwFCsZX\nuRp0eKwTH2YwHwYDVR0jBBgwFoAUdKOPDqSFQ6Bfk0I/asBkByt5gsUwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIB\nAKoNIqiOdjlUBNg7cvR9Su4KgGrsZf78pG1H2MlNxJjFM/80EiWEfze/EG2MLxFq\n8vToIHDjb0kVetYpdmfHNXTTlaaroBlXwyUYToPzQ985qr3LD8RhYZFAsiZCTtpJ\n4FT6sh/mccTyx8G8+ZS6mn/le2WPj/t6beNLgbdl5n8fghdQcmT/TqGXE50UftWt\nHSx3fsq2aKuNdVzhKzTin50IbiE9DV1dKo6B+ipOy/Dz5GMv3Z/3ntLTvxabCMOl\n7s7WsUE7VPABRSifUS80Z9Ai38faLSu+Ouzx40ceXwvlFQtJ2LYQ8Ru5Q63k2wB3\nEOE6cgAhiYExrz3fDDtUkui9vIfWfTPMnXR7xQ8YqK4Qqld2ESxvMQU2jzbZKSf+\n3sWnPvN4HTg0cfysmOdLGZwf3u8A9tMtxhUEtxUx7r76M4ekSKdNv1Nf5u5N/h7b\nAbEqSp1XADTxkE448i7hNJzn2Ce6JtFya231Ni0xyYKQIajP18jNypAw1eABYFkN\n53vQTUfqcbtcrCios1xRdDqfgkYaKZv7p63aoObFTf/mmG7sFjGAEPQscagOukwN\nwnkjCVifVbk5qJUaUWSLeYziI+HYkEA9P/h4o83nbf0YgBtOFoc0XWKmKagHifZN\nSEJ9kRCWzYaL2ChiL6jHGh26WT/hbNKeAlcxPnT4u/l1\n-----END CERTIFICATE-----\n",
  "application" : "http://api.example.com/applications/39d82d7f34484b53ae1dd47ee8924512",
  "environment" : "http://api.example.com/environments/047ab08009fe4da8be6905b55552ab52"
} ]

HTTP response

HTTP/1.1 201 Created
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 238

"http://api.example.com/application_principals/32c15e61798e477d8400950e6f1462a9,http://api.example.com/application_principals/1ba98ed2ba4b43c9af7528b4a2a19cba,http://api.example.com/application_principals/357370a8e5184bed9abf2f2ceb7ef3c3"

Retrieve application principal

The application_principals/{id} resource is used to retrieve a single principal of an application for an environment.

A GET request will retrieve the details of a ApplicationPrincipal.

HTTP request

GET /application_principals/1e9ee6ce053c46b0932358c8503a26fd HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 2542
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "principal" : "principal 1 test",
  "applicationPem" : "principal 1 test",
  "principalChain" : null,
  "privateKeyPem" : null,
  "privateKeyUploaded" : false,
  "expiresOn" : null,
  "uid" : "1e9ee6ce053c46b0932358c8503a26fd",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_embedded" : {
    "environment" : {
      "name" : "raboenv1",
      "shortName" : "raboenv1",
      "visibility" : "public",
      "color" : null,
      "description" : "environment",
      "uid" : "047ab08009fe4da8be6905b55552ab52",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    },
    "application" : {
      "type" : "Java",
      "shortName" : "rabo_app1",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "5ffc4240fcdf4a479a16f2b0b12ab909",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "applicationPrincipal" : {
      "href" : "...",
      "title" : "A principal for application"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    },
    "application" : {
      "href" : "...",
      "templated" : true,
      "title" : "An application"
    },
    "environment" : {
      "href" : "...",
      "templated" : true,
      "title" : "An environment"
    }
  }
}
Relation Description

delete

Existence of this link indicates that the currently authenticated user can delete this ApplicationPrincipal

Update application principal

A PATCH request is used to update a ApplicationPrincipal. Only principal field can be modified. If application or environment needs to be updated, delete the ApplicationPrincipal and create a new one.

$ curl 'http://api.example.com/application_principals/1e9ee6ce053c46b0932358c8503a26fd' -i -X PATCH \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "principal" : "-----BEGIN CERTIFICATE-----\nMIIFJjCCAw6gAwIBAgIJAINuAirfnRU6MA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNV\nBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODAeFw0xODA1MjkxMDM0MTRaFw0zODA1\nMjQxMDM0MTRaMCAxHjAcBgNVBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODCCAiIw\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVDjbhq3TGuQ6INTZ+dhSIgsdbq\nw2nxF3myrS7v89bcNxMyLypWYTmR4OAYRXRBnW4KX6sTubPyL3ogPz6hXmfmPfAz\n+X//HTIiybL3e3qwxqWphp09+JT6veEp/e/wEEjSMj5nsxkDEjj9JEQWu/1B+N+V\nXOJkTYFy05ZgeWplkyLwT71myF047aISK27a+VebBMaPpvvetScbMSwxAbk51cGV\nUC4gpwvnvsbp/CRuMV0dYzkeTmxgn860l3s8+7qUJoOrtiO0cDpv97SK9Ck9ef1k\nR6KFttzxb/u+eMFi3RUErEGwE8P3thTseXRkp5hMwcyaSQv0wfLawlwcNFGOzsBx\nfJS7QUIUpEyzRqj5Ppgaj530APxbgitLOfVLZ2DvcBcmnQns6OE+uwymuvAj8Ftj\n6AFJXH2lmswHLl5uD9kIOwmpZg4NZLP2Qv+WOT6HLgI7Kv1z0OV2H7UlWA7hwQXl\noQ6fJ2YLEhT+GM9xHKJ+DQCxvjWvtGUSb/Dk0j/R9mpSFfHvVJgE/xV+7F7Vlyw5\n/cDpF3GZOTGQ/MFy4RqRrTtjnZw2/bZZyJ+Xb743OeQhABFUdadh8cmyehDregtr\nalHxtjKxCxrT55OHCYhbCoz6nEnQURD7EPQhU5puUKalRq2ApDkveIk8uj0HQmQm\nKyRuNX7M6vCoWnpxAgMBAAGjYzBhMB0GA1UdDgQWBBR0o48OpIVDoF+TQj9qwGQH\nK3mCxTAfBgNVHSMEGDAWgBR0o48OpIVDoF+TQj9qwGQHK3mCxTAPBgNVHRMBAf8E\nBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAbJanqR4P\nmr05AyAu8vlrLsleXA8VAPDiaaYStYH5cIdBBWkaIxanLFDmbyQwKkKdkHQWV9X8\n1P52q49T9RsoBsEOmwdiaCY2PEUz7Y3bFW0UeM+k65VlHlXWywRM6+O02t4TrJXH\nF6h7vPon01OwhgW9Yil/Kr+yyZK50Ic+pm4UhHmtxY932cNaRCdae5tKsjabsP7Z\nrdAksLia8mTp+HADkZJ1uODxyDh0S1WMKB5JoHYBrmtUr1NYLgRC6SinhK4r7rbi\nEWuurE605Nm//jv3Czdy8gEsMDtXLZYY0iqGnD11MAJFXyQ6PG2eq1cXcsJNRojm\n8D4ipfQ+z4bp9dDVR2DzVyTYe4yuhZuIe2phOhPc8KkBaXQRMHfVKyeEmzqEFLaM\nkfaDZkRsrMZSqh+KJoxDG3h8UqssChX+cuZdsjRhNWRqfbB20I9Upwa+XooyCU4E\nEkYyFTMchtvbYZEN/XvlPfhK5JB9eJ5rrcE8hKsP3gftchWWqCDedKugvZW/t5Vk\nlc+z4IjiJFnRDfcr4Z5V2Hpseyno3AEK7aUdJlmuPnxoImFXfQ4jUguM/wznJHl7\nXv9T0oaBVHM7Bd6PlES04Oho0KZXS6NryTsZn9GFV4qGZj5lEeOVl15AOfeIjP/I\nokA2uUH/ZuJlR/BEmqbLt5HWPRNT/GgLfPY=\n-----END CERTIFICATE-----\n"
}'
PATCH /application_principals/1e9ee6ce053c46b0932358c8503a26fd HTTP/1.1
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Content-Length: 1898
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "principal" : "-----BEGIN CERTIFICATE-----\nMIIFJjCCAw6gAwIBAgIJAINuAirfnRU6MA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNV\nBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODAeFw0xODA1MjkxMDM0MTRaFw0zODA1\nMjQxMDM0MTRaMCAxHjAcBgNVBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODCCAiIw\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVDjbhq3TGuQ6INTZ+dhSIgsdbq\nw2nxF3myrS7v89bcNxMyLypWYTmR4OAYRXRBnW4KX6sTubPyL3ogPz6hXmfmPfAz\n+X//HTIiybL3e3qwxqWphp09+JT6veEp/e/wEEjSMj5nsxkDEjj9JEQWu/1B+N+V\nXOJkTYFy05ZgeWplkyLwT71myF047aISK27a+VebBMaPpvvetScbMSwxAbk51cGV\nUC4gpwvnvsbp/CRuMV0dYzkeTmxgn860l3s8+7qUJoOrtiO0cDpv97SK9Ck9ef1k\nR6KFttzxb/u+eMFi3RUErEGwE8P3thTseXRkp5hMwcyaSQv0wfLawlwcNFGOzsBx\nfJS7QUIUpEyzRqj5Ppgaj530APxbgitLOfVLZ2DvcBcmnQns6OE+uwymuvAj8Ftj\n6AFJXH2lmswHLl5uD9kIOwmpZg4NZLP2Qv+WOT6HLgI7Kv1z0OV2H7UlWA7hwQXl\noQ6fJ2YLEhT+GM9xHKJ+DQCxvjWvtGUSb/Dk0j/R9mpSFfHvVJgE/xV+7F7Vlyw5\n/cDpF3GZOTGQ/MFy4RqRrTtjnZw2/bZZyJ+Xb743OeQhABFUdadh8cmyehDregtr\nalHxtjKxCxrT55OHCYhbCoz6nEnQURD7EPQhU5puUKalRq2ApDkveIk8uj0HQmQm\nKyRuNX7M6vCoWnpxAgMBAAGjYzBhMB0GA1UdDgQWBBR0o48OpIVDoF+TQj9qwGQH\nK3mCxTAfBgNVHSMEGDAWgBR0o48OpIVDoF+TQj9qwGQHK3mCxTAPBgNVHRMBAf8E\nBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAbJanqR4P\nmr05AyAu8vlrLsleXA8VAPDiaaYStYH5cIdBBWkaIxanLFDmbyQwKkKdkHQWV9X8\n1P52q49T9RsoBsEOmwdiaCY2PEUz7Y3bFW0UeM+k65VlHlXWywRM6+O02t4TrJXH\nF6h7vPon01OwhgW9Yil/Kr+yyZK50Ic+pm4UhHmtxY932cNaRCdae5tKsjabsP7Z\nrdAksLia8mTp+HADkZJ1uODxyDh0S1WMKB5JoHYBrmtUr1NYLgRC6SinhK4r7rbi\nEWuurE605Nm//jv3Czdy8gEsMDtXLZYY0iqGnD11MAJFXyQ6PG2eq1cXcsJNRojm\n8D4ipfQ+z4bp9dDVR2DzVyTYe4yuhZuIe2phOhPc8KkBaXQRMHfVKyeEmzqEFLaM\nkfaDZkRsrMZSqh+KJoxDG3h8UqssChX+cuZdsjRhNWRqfbB20I9Upwa+XooyCU4E\nEkYyFTMchtvbYZEN/XvlPfhK5JB9eJ5rrcE8hKsP3gftchWWqCDedKugvZW/t5Vk\nlc+z4IjiJFnRDfcr4Z5V2Hpseyno3AEK7aUdJlmuPnxoImFXfQ4jUguM/wznJHl7\nXv9T0oaBVHM7Bd6PlES04Oho0KZXS6NryTsZn9GFV4qGZj5lEeOVl15AOfeIjP/I\nokA2uUH/ZuJlR/BEmqbLt5HWPRNT/GgLfPY=\n-----END CERTIFICATE-----\n"
}
HTTP/1.1 204 No Content

Delete application principal

A DELETE request is used to delete an ApplicationPrincipal.

$ curl 'http://api.example.com/application_principals/1e9ee6ce053c46b0932358c8503a26fd' -i -X DELETE \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN'
DELETE /application_principals/1e9ee6ce053c46b0932358c8503a26fd HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN
HTTP/1.1 204 No Content

Validate application principal

Validates the provided application_principal pem’s content for validity.

POST /application_principals/validate HTTP/1.1
realm: rabo
Content-Length: 3732
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "contents" : "-----BEGIN CERTIFICATE-----\nMIIEvjCCAqagAwIBAgICECEwDQYJKoZIhvcNAQELBQAwKzEpMCcGA1UEAwwgQXh1\nYWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEwHhcNMTgxMTI3MjE1NDUyWhcN\nMjEwNTE1MjE1NDUyWjB5MQswCQYDVQQGEwJOTDEQMA4GA1UECAwHVXRyZWNodDEQ\nMA4GA1UEBwwHVXRyZWNodDETMBEGA1UECgwKQXh1YWwgQi5WLjETMBEGA1UECwwK\nQXh1YWwgQi5WLjEcMBoGA1UEAwwTYXh1YWwtZGVwbG95LWNsaWVudDCCASIwDQYJ\nKoZIhvcNAQEBBQADggEPADCCAQoCggEBALuHV0bcAckUaGHSXVWo1Juxp8ROZeiG\niPQhBuxsyPqve08ApHiUuK5SWEskYXTo9/h4o5gN9Dv58JdsCQ23kkaMN9X8S8Ca\nE7xoPZeaqyZ0nyK+BNxazV8FPn5gFczPqVW1pDnl8O0m3w6WgXweYJ9itsj3xAuj\n+0MunflzIOTpp2KQDvn2vLLY7WniiedECtVM1vkYXgteO24VWlZgFOMu/myE4d5e\nIij7ddGKZllVyQjHOeRPI8MbbMvHBUMzh9tt6/UKuaF5nwPwCXkkmPYtXSA3QY2v\njpsgghKOioGgOHNsWumQa6wT+6aGGnt4wy4G+xhsdieJR9h5xIp+JeECAwEAAaOB\nnTCBmjAJBgNVHRMEAjAAMB0GA1UdDgQWBBS6XN829G3DhrsS0VFSFEF5EIidDTAf\nBgNVHSMEGDAWgBRr0ilXi1I2LAUKxle5GnR4rBMfZjAOBgNVHQ8BAf8EBAMCBaAw\nHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMB4GA1UdEQQXMBWCE2F4dWFs\nLWRlcGxveS1jbGllbnQwDQYJKoZIhvcNAQELBQADggIBAGcF9bP+hiTBYZiwvyo0\nZjocyBe0rMT7wTKobTnZZBLPwCau1yWXc+DC+PSW/d0wnQUAe9FRkt3ot7doZD7y\nJ5mY9880pJ0xqK0KroEw2nLY2KYswlTpzUglwd2vpNG40gzTZdx9O4GRAeDbaBN7\nRM6+fCjEpPM3/J68Wt6O5xQe7yOJ6oNF1E0k0DJ6xu4lsMzdgiVqGfcOEjGEAA7E\nOAK0gPTyUGnVZMo2BGTjGaeNumA+yE9Lixn5FYcK5CvD5cP8D0AvnSizLGqNAQ0a\nFUiSEp3n+0/9QQmDCNToHTFOsaBbD4v/IGdW1U9i3iewhP5xfA6/LxkkzxUE/5TW\nsygA081w+HZOE0jqExb5smoJQd7e2vj2g5Qq5U0gmZ+GxvPe/3muP9GHp9VgHAZB\nDVTir9ut7qyMj81bePuVs3cnilUOGTZIUDpJaYblLIBa35QNZ/nYUhh/R9NfUvFt\nPogI7CFmjcqkF2FRqfWaNTZ5lcbshnBSzxY48ZFKs9J/If9b5PbEckZdoU7mQPOA\ni0hX+iIS8DROoCy2iJFVmqqe0kvawjRTUfDjJu8tgW5jvWtDSSUFiol5hg8v4/Vu\n6DzwhzDrlEPn/RxQycCU51cN7yZiYLysrMCb3oulxUM7lDsV633eOifOScrDkglt\njUmbcS1Le264gxwL8pk29Xun\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFLTCCAxWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UEAwwVQXh1\nYWwgRHVtbXkgUm9vdCAyMDE4MB4XDTE4MDUyOTExMDEzNFoXDTI4MDUyNjExMDEz\nNFowKzEpMCcGA1UEAwwgQXh1YWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEw\nggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9uOuzJekmeo3hl8fjQlKS\nHApS3llcliq1YrXpkMbHAA9StHaMHPW+Dzr2/+cdfBAmN3sujCY8Paq15QI+TDOq\nKA5SByCBQKXx2qulBPcZs3mDMt+KxAaeWfwR4Nj0NNKbmw2HjDddo77joeVOuOX2\n4o1wXzmAAolVMIcRYA11EMWNUtYrHCzBa7RfYht2G5dE69ckrgfw1Nxs01Sbg+xP\nsK9aK/LHPUalYZNY+76x7vabEpzaPfpyKzDTWA20SPk0WfTf9/+K3o+urzDG8O/q\nw9xbBOzWohGmRyA/z841p1SD7inpZcyO/KeW1yTP2WyFxADwUrv2mEYXnma/Gdna\nG62IQYk/UMex9W8pT6tfwrg/36sSwr88yPR5dJxzjHUE+w/rYG3k+K+EqvZ5qOC5\n32AJ9BS2nbNuGpmRU1qoMCwpL7B2E/CKJLIdFcf/qmcnWJEXo+u34+fQZg8XaDCI\nXhUqAHz6YkjCiFGd/JwL1IqsfxFsV9wHTUbW2AumglU65ZrjhXrrzE7Hk9ng1spJ\ndOwfBihBNjnr0mKHY9leJ3chJ9HQ55/fEgcRNrj8EC69QCeAtpY5yOAjKpA03UvF\ngrDt8CIyIehNUwTXIhQSHZU4eZ0rzWf0vvMbhL2FvKtphbpnNKoXeNLv2IMZpT4B\nVwsqLqaIkl/I4FPpYBoSYwIDAQABo2YwZDAdBgNVHQ4EFgQUa9IpV4tSNiwFCsZX\nuRp0eKwTH2YwHwYDVR0jBBgwFoAUdKOPDqSFQ6Bfk0I/asBkByt5gsUwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIB\nAKoNIqiOdjlUBNg7cvR9Su4KgGrsZf78pG1H2MlNxJjFM/80EiWEfze/EG2MLxFq\n8vToIHDjb0kVetYpdmfHNXTTlaaroBlXwyUYToPzQ985qr3LD8RhYZFAsiZCTtpJ\n4FT6sh/mccTyx8G8+ZS6mn/le2WPj/t6beNLgbdl5n8fghdQcmT/TqGXE50UftWt\nHSx3fsq2aKuNdVzhKzTin50IbiE9DV1dKo6B+ipOy/Dz5GMv3Z/3ntLTvxabCMOl\n7s7WsUE7VPABRSifUS80Z9Ai38faLSu+Ouzx40ceXwvlFQtJ2LYQ8Ru5Q63k2wB3\nEOE6cgAhiYExrz3fDDtUkui9vIfWfTPMnXR7xQ8YqK4Qqld2ESxvMQU2jzbZKSf+\n3sWnPvN4HTg0cfysmOdLGZwf3u8A9tMtxhUEtxUx7r76M4ekSKdNv1Nf5u5N/h7b\nAbEqSp1XADTxkE448i7hNJzn2Ce6JtFya231Ni0xyYKQIajP18jNypAw1eABYFkN\n53vQTUfqcbtcrCios1xRdDqfgkYaKZv7p63aoObFTf/mmG7sFjGAEPQscagOukwN\nwnkjCVifVbk5qJUaUWSLeYziI+HYkEA9P/h4o83nbf0YgBtOFoc0XWKmKagHifZN\nSEJ9kRCWzYaL2ChiL6jHGh26WT/hbNKeAlcxPnT4u/l1\n-----END CERTIFICATE-----\n",
  "environment" : "https://api.example.com/api/environments/047ab08009fe4da8be6905b55552ab52"
}
HTTP/1.1 204 No Content

Validate application principal’s Private Key

Validates the provided application_principal’s private key.

POST /application_principals/validate_private_key HTTP/1.1
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Content-Length: 7255
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "certificate" : "-----BEGIN CERTIFICATE-----\nMIIFhjCCA26gAwIBAgICECwwDQYJKoZIhvcNAQELBQAwKzEpMCcGA1UEAwwgQXh1\nYWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEwHhcNMTkwNjEzMTQwNTMyWhcN\nMjExMTI5MTQwNTMyWjBjMQswCQYDVQQGEwJOTDEQMA4GA1UECAwHVXRyZWNodDEQ\nMA4GA1UEBwwHVXRyZWNodDEOMAwGA1UECgwFQXh1YWwxDjAMBgNVBAsMBUF4dWFs\nMRAwDgYDVQQDDAd0ZXN0IENOMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC\nAgEAnZaQX6aDGnNsua3DNlV/RI8BmjvpFaqOWNmWQYive6w8BTciuq+EeVUM6SGc\nST4YCFsuNFQjxYCiGMzFBp1kBWOY/x255MVik/zlcSZgSIqr2zikyR/9d9F9QEQr\nUXPthu3UwLXWJu+itfiOKDb5a2SY512MXaUDNntiZdSoL9IzV3vKOxNibyT3Ldmc\nf4FvBpF3cH+/SFjWi7Nu7u6xqQDotm/u3S61XaFlenTHwHvNezLtSU7xVFoFOGk+\nC0OTfLFXcEeRPujTpDC15PweBwlnwmmj7QjmJYI6Eq1dJ5JW5rrHLO1qYqZtfyG3\nl1PsGpxWHNJGTIyNjbQzcjdCCZBSdEVnICAU6m4RG33EXkjExPerlEhCcw8D703r\nWB8fgBc1n3wM/NZ3YXsHxTIcBTYFeIAzs3sGDKZ4cjxzktFIAUQ5aIMj9vc95et8\nTE8EiVpDDbL0SppmSawoA+/U+sx7t8Hh9m/HnGNAIULuj4CWYqvgM2/4ptSdpQfl\nzCKe4Hp1ACfcuOs/O5sj0PhosdOHKoLFki+Bf+wL5I83VpNnDHuEZ+zNF83JdcWL\ncd5hWWZ+EcW9GO3ITUKvBwKTKWB9wHCdyuAUTj6UrF1X4PYMvV5rK081gguefJH9\nh9RlBWy+5JDU2j7nt1Jrl4CM1v73LftCKmCC6bF8wPfl34MCAwEAAaN8MHowCQYD\nVR0TBAIwADAdBgNVHQ4EFgQUbFnI40k82TldvwpXAmngw+Gy4OYwHwYDVR0jBBgw\nFoAUa9IpV4tSNiwFCsZXuRp0eKwTH2YwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQW\nMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAgEAlMAVbb+M\nKx6ej6boH27b5fSZGCiXEanQ0u8uO1DeLJsagYwsb9EsCLQpVc5+M+rhMk++yVvr\n2Yb+UkTWfWcUwTcfLk3TEYe8X/8zqY+uDJOumNpSIgyF0kPeQ9KGNjaCZLa87Npb\n0dvXIabohJlEMGJt2/cAK19keC5VbxwKeSk95RUiSwgE8K4DbtyFUIIy8a1y+Mwu\nvlfIz/FVgQWlWjSZ0NUx7/oKgznDg5oRjiuD6yYM084soiW3RgxGQ/sxqUXJyc++\nFU3xwO3mVX1tjry/d42KRSxsLpM2+jAXawwzRWFjuFUExl1i1OgaGtU33MRo6siO\n0BPal3eBC5I7rGb8GOuYQmO5QLPpj8+sxCzqzKQOZ9ATLvdjM6v9EiRp5nuTXFh4\nV07qQ4hxs4KeRz9Oig5VpnHQ8/SGWFPV2TgEnPr3Lu6knNjvI8O9wwo1mF/Q3yUc\nHE1YdLJ9ctJ2KHbsPpWDO4Zk7+6LejkbscYzEOA2pUlQzpv1rZmOQcnhnhKHlppK\ni5ogPiczSIdmOqQ1jQNS7hzdWZCxpGdjsXtVrYRFUDRv9vqHieBSzuh/GI/PvW7d\nPNRKkMlItv+C4UczOBM1y3kMsHwFSvFfC++TBlA4PkSmtpgnMAXePUlck6H8irtD\naqeURSylqc7U1W1KbsDpI97UCxbVZnFPMhE=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFLTCCAxWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UEAwwVQXh1\nYWwgRHVtbXkgUm9vdCAyMDE4MB4XDTE4MDUyOTExMDEzNFoXDTI4MDUyNjExMDEz\nNFowKzEpMCcGA1UEAwwgQXh1YWwgRHVtbXkgSW50ZXJtZWRpYXRlIDIwMTggMDEw\nggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9uOuzJekmeo3hl8fjQlKS\nHApS3llcliq1YrXpkMbHAA9StHaMHPW+Dzr2/+cdfBAmN3sujCY8Paq15QI+TDOq\nKA5SByCBQKXx2qulBPcZs3mDMt+KxAaeWfwR4Nj0NNKbmw2HjDddo77joeVOuOX2\n4o1wXzmAAolVMIcRYA11EMWNUtYrHCzBa7RfYht2G5dE69ckrgfw1Nxs01Sbg+xP\nsK9aK/LHPUalYZNY+76x7vabEpzaPfpyKzDTWA20SPk0WfTf9/+K3o+urzDG8O/q\nw9xbBOzWohGmRyA/z841p1SD7inpZcyO/KeW1yTP2WyFxADwUrv2mEYXnma/Gdna\nG62IQYk/UMex9W8pT6tfwrg/36sSwr88yPR5dJxzjHUE+w/rYG3k+K+EqvZ5qOC5\n32AJ9BS2nbNuGpmRU1qoMCwpL7B2E/CKJLIdFcf/qmcnWJEXo+u34+fQZg8XaDCI\nXhUqAHz6YkjCiFGd/JwL1IqsfxFsV9wHTUbW2AumglU65ZrjhXrrzE7Hk9ng1spJ\ndOwfBihBNjnr0mKHY9leJ3chJ9HQ55/fEgcRNrj8EC69QCeAtpY5yOAjKpA03UvF\ngrDt8CIyIehNUwTXIhQSHZU4eZ0rzWf0vvMbhL2FvKtphbpnNKoXeNLv2IMZpT4B\nVwsqLqaIkl/I4FPpYBoSYwIDAQABo2YwZDAdBgNVHQ4EFgQUa9IpV4tSNiwFCsZX\nuRp0eKwTH2YwHwYDVR0jBBgwFoAUdKOPDqSFQ6Bfk0I/asBkByt5gsUwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIB\nAKoNIqiOdjlUBNg7cvR9Su4KgGrsZf78pG1H2MlNxJjFM/80EiWEfze/EG2MLxFq\n8vToIHDjb0kVetYpdmfHNXTTlaaroBlXwyUYToPzQ985qr3LD8RhYZFAsiZCTtpJ\n4FT6sh/mccTyx8G8+ZS6mn/le2WPj/t6beNLgbdl5n8fghdQcmT/TqGXE50UftWt\nHSx3fsq2aKuNdVzhKzTin50IbiE9DV1dKo6B+ipOy/Dz5GMv3Z/3ntLTvxabCMOl\n7s7WsUE7VPABRSifUS80Z9Ai38faLSu+Ouzx40ceXwvlFQtJ2LYQ8Ru5Q63k2wB3\nEOE6cgAhiYExrz3fDDtUkui9vIfWfTPMnXR7xQ8YqK4Qqld2ESxvMQU2jzbZKSf+\n3sWnPvN4HTg0cfysmOdLGZwf3u8A9tMtxhUEtxUx7r76M4ekSKdNv1Nf5u5N/h7b\nAbEqSp1XADTxkE448i7hNJzn2Ce6JtFya231Ni0xyYKQIajP18jNypAw1eABYFkN\n53vQTUfqcbtcrCios1xRdDqfgkYaKZv7p63aoObFTf/mmG7sFjGAEPQscagOukwN\nwnkjCVifVbk5qJUaUWSLeYziI+HYkEA9P/h4o83nbf0YgBtOFoc0XWKmKagHifZN\nSEJ9kRCWzYaL2ChiL6jHGh26WT/hbNKeAlcxPnT4u/l1\n-----END CERTIFICATE-----\n",
  "privateKey" : "-----BEGIN PRIVATE KEY-----\nMIIJQQIBADANBgkqhkiG9w0BAQEFAASCCSswggknAgEAAoICAQCdlpBfpoMac2y5\nrcM2VX9EjwGaO+kVqo5Y2ZZBiK97rDwFNyK6r4R5VQzpIZxJPhgIWy40VCPFgKIY\nzMUGnWQFY5j/HbnkxWKT/OVxJmBIiqvbOKTJH/130X1ARCtRc+2G7dTAtdYm76K1\n+I4oNvlrZJjnXYxdpQM2e2Jl1Kgv0jNXe8o7E2JvJPct2Zx/gW8GkXdwf79IWNaL\ns27u7rGpAOi2b+7dLrVdoWV6dMfAe817Mu1JTvFUWgU4aT4LQ5N8sVdwR5E+6NOk\nMLXk/B4HCWfCaaPtCOYlgjoSrV0nklbmuscs7Wpipm1/IbeXU+wanFYc0kZMjI2N\ntDNyN0IJkFJ0RWcgIBTqbhEbfcReSMTE96uUSEJzDwPvTetYHx+AFzWffAz81ndh\newfFMhwFNgV4gDOzewYMpnhyPHOS0UgBRDlogyP29z3l63xMTwSJWkMNsvRKmmZJ\nrCgD79T6zHu3weH2b8ecY0AhQu6PgJZiq+Azb/im1J2lB+XMIp7genUAJ9y46z87\nmyPQ+Gix04cqgsWSL4F/7AvkjzdWk2cMe4Rn7M0Xzcl1xYtx3mFZZn4Rxb0Y7chN\nQq8HApMpYH3AcJ3K4BROPpSsXVfg9gy9XmsrTzWCC558kf2H1GUFbL7kkNTaPue3\nUmuXgIzW/vct+0IqYILpsXzA9+XfgwIDAQABAoICAA3yTUSpz+B/ZpfoMOaWGnVO\n0q17r90jAwYJ+6pBFoazb3xmrMQo1GiIhmP7fYFd5XKX3zbyW1gXUkEvniA/vaJc\ndiXd053Tei3uq7+fzdWdsCfuk2bZVe1MtPEDF3JV+CeA1NtZPGKlwpioLqyQcPJ4\nLLANL2b6O5aOxN6OO3Q//hs38WXZCVUcyGNeZuNB6TmDljZ2l88nTZV/g8nRhheW\n5QGAVntsrtBigECeJS97xWupziY2vlTgwqWDauJEUMEwULS3ILuYj2JwjSh+x4mH\n447pGoDX0MZxCAKvJRdjdB1nWkk3mbqxT+94ZG8YFkUkoNpcIayUo9JuqD7rdQSP\n/PyxYgy7jmKh0flINuqdgwVZpz/8hjrGOfufYPrNfAZqjan1zt8hDQTyTI0V8Ngc\nXzSWMVddXObPyOrdlBbJRHvhQ5lpIh/TKqAURCKptpSarLdcwlQqiru6leDCNAwv\nAUPQ/212MrSl59p5T9RdvxikOfhFDalYcl3xywSjZowwRuSzgYXpRr8STKxxzlGB\nvO4rQYHPzdP3JvytFqPghSNSVt+M6qu1ph6ou70YHSpVuocvB5+6iHDDgr0vrSXE\nawm4EOSEI+J9F5/YkIE1UtOI6Aj5HHguAWJXBj0ZGiv/bpAVNr+eTx1Ga9qM8nx4\n/2LxlF0urRWZw+qfXL3BAoIBAQDaI0L8k460PSUVF/dL5jwqvSPZey+piHJGWfBr\n5wWslDYn/ABJYKj3NYFF4WDvnabXa8qTmxGOvMuwAwpkp3iEY7MB651tJ26CSCQ4\nYSYwYve/uuhlfQhtFiEihbj9jPebWJK1mQTU+SMOrxWU6UfkFTtsBqnB1ewAorWg\nAbqICUoW4Up10GOAsKRaRu6vhbReTRjM6/G2d3WlFiVsroVPbJeAAWCM7StQaio+\nUKfDJwv8TTC6nPLiYjXfwCLhMSmmD89rreWh8MvVefNTQ4sHcdLJe7reWYxYgOQ3\nXokPFDkbUOqZ1vwahDADYzzI0Nc0YgZW5vR8aYJkhnr7IzUlAoIBAQC48Nb2QXdl\ns9WUzCkKqhonUJhv5+85HIzE7EwnBaNgPAV+whLc1RHYXYGbIXmwZnGPW9gO8E9a\nnoVCCOLKEofhDQnbOH0xucESsGe1CeTj9gjlr0ASxqp7C2EnDBOBbd2g1KGX+IER\ny4YD3D1qeegG/Sntdh4G2x7W/omHRkz+uZ9EuJDd6VBZZwckGJ0kv4iUBAxn1BtL\ngTkFJwManqrQd/4Ceh4osUlXgmpMgjZWzXA+i2jrZh4uWTvvUFEh/GsAqVhXcrHS\nEkSTB8pVRmXq5WIefPNkQqfoXX3aa0KYgPK8TpJWu/oqzPLCzP12ioCFNDsFIx8o\ngFIqSniwhKWHAoIBACdMmQHmF5yTM34UXkI3TXmpr667yb9yTJwuEeluqpAH96XG\necq+dlJrOkn7q7ofnfJLgiiLlGMx0kR4l8PAhC7dw19CMo96vicMljHuFrI68kWB\nh+LY3s7AYOHWU5iib+11zKCY28z+wXkgw/Oa/4+w3467uJOqVaVbqvsTtKZTfhyX\nJBILpBGIQWPeSZwnq3Id06z/iQGFjhVa4w0sd+nyN20hUmKxS89mAQxO/ZpkC329\n7lyAcCWm6evQsrf9YnJ/gK/2mVtOhXqFSPgkQATsVbxk5Sqv2WAMgJEVH/4ud4db\nUZi7qZmhXQEPPOE09sCCNIAthbhwTcSMkdVy510CggEAQr3PpdEcaJyMsIU5LnsS\nsyt3x7LY9zBhcNOh69cyDZG7nfIl4oIWTZH5KuXax5lA1C6d+04oJRjeGGWiirBD\nTylobC+npqFVlwwIcSIf81CgB1vGcMA3V+5UYkYOaAAhImB57KEm2ygqtgvuMhXK\ncXM9hU/CKFE9gPMc6K+rK6YLXz6IMT143Lq8rf8f/toMTPZlD7dRHl+FF2Hr0dh+\n5nrXNUeiyKaqRCVxfSjkuVCseDXRaFpS/AECCyxeCzjP2M5EblKa76feDX2bPEkK\nkMm1LjGDmKQhek77Ey7wOp8WenSUhS6TaozJ8xkNQ5FaLjgaMJFrNi+Q92gmw/Uq\n0wKCAQA7eo+Wz6VBg7i//jrVaZl7MqmuqpaID6vXpAbmjU5BGEoOzxK9cIS0AMsL\npY5QzwQb+y9S35qpkaXsgndlyvdMBq58e5NN+Z8WEULuO85CW3rD6e1rWlXx6M3Y\nLFSKJQUjQ63FQJ+LX8nHylDkV/9T/sCFiYa1zv3AW2c7rz8eqXP9MabptpMqRfwZ\nUVlECszO2xb3zwg7WEnZu+DBNKsTIrKT8w/h3KvvWRbORpDOYcjW64V2NnjBP6Pc\nCUE2QsYVDOG/UDXjNanf3DnMCVVMJn06p+HQCDlATFnScu1qo++A7Dj4HTWmDtiU\nDsbI3yNePnNb5x1AZjii68cy9pLG\n-----END PRIVATE KEY-----"
}
HTTP/1.1 204 No Content

ApplicationPrincipals search endpoints

/application_principals/search/findByApplication

Returns all application principals for given Application.

Parameter Description

application

A valid URI of an existing Application

GET /application_principals/search/findByApplication?application=http%3A%2F%2Flocalhost%2Fapplications%2F5ffc4240fcdf4a479a16f2b0b12ab909 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 3100

{
  "_embedded" : {
    "application_principals" : [ {
      "principal" : "principal 1 test",
      "applicationPem" : "principal 1 test",
      "principalChain" : null,
      "privateKeyPem" : null,
      "privateKeyUploaded" : false,
      "expiresOn" : null,
      "uid" : "1e9ee6ce053c46b0932358c8503a26fd",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "environment" : {
          "name" : "raboenv1",
          "shortName" : "raboenv1",
          "visibility" : "public",
          "color" : null,
          "description" : "environment",
          "uid" : "047ab08009fe4da8be6905b55552ab52",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "instance" : {
              "href" : "...",
              "templated" : true,
              "title" : "An instance"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "application" : {
          "type" : "Java",
          "shortName" : "rabo_app1",
          "visibility" : "public",
          "owners" : {
            "name" : "Application-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "description" : null,
          "uid" : "5ffc4240fcdf4a479a16f2b0b12ab909",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationPrincipal" : {
          "href" : "...",
          "title" : "A principal for application"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "delete" : {
          "href" : "...",
          "title" : "Indication that this entity can be deleted"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

/application_principals/search/findByEnvironment

Returns all application principals for given Environment.

Parameter Description

environment

A valid URI of an existing Environment

GET /application_principals/search/findByEnvironment?environment=http%3A%2F%2Flocalhost%2Fenvironments%2F46cfaf47d2d04d12923beefac3d0ba5a HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 3135
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "application_principals" : [ {
      "principal" : "CN=raboapp3,D=rabo,S=utrecht,C=NL",
      "applicationPem" : "CN=raboapp3,D=rabo,S=utrecht,C=NL",
      "principalChain" : null,
      "privateKeyPem" : null,
      "privateKeyUploaded" : false,
      "expiresOn" : null,
      "uid" : "177d7b6b14594e8d8e51186eff59408b",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "environment" : {
          "name" : "raboprivenv1",
          "shortName" : "raboprivenv1",
          "visibility" : "private",
          "color" : null,
          "description" : "environment",
          "uid" : "46cfaf47d2d04d12923beefac3d0ba5a",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "instance" : {
              "href" : "...",
              "templated" : true,
              "title" : "An instance"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "application" : {
          "type" : "Java",
          "shortName" : "rabo_auto_app3",
          "visibility" : "public",
          "owners" : {
            "name" : "Team App Admins",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "514d4oit834841869644c2ad8b439997",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "description" : null,
          "uid" : "4cc380171afc4c898b6f6c02caccf451",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationPrincipal" : {
          "href" : "...",
          "title" : "A principal for application"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "delete" : {
          "href" : "...",
          "title" : "Indication that this entity can be deleted"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

/application_principals/search/findByApplicationAndEnvironment

Returns application principals for given Application and Environment.

Parameter Description

application

A valid URI of an existing Application

environment

A valid URI of an existing Environment

GET /application_principals/search/findByApplicationAndEnvironment?application=http%3A%2F%2Flocalhost%2Fapplications%2F5ffc4240fcdf4a479a16f2b0b12ab909&environment=http%3A%2F%2Flocalhost%2Fenvironments%2F047ab08009fe4da8be6905b55552ab52 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 3100
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "application_principals" : [ {
      "principal" : "principal 1 test",
      "applicationPem" : "principal 1 test",
      "principalChain" : null,
      "privateKeyPem" : null,
      "privateKeyUploaded" : false,
      "expiresOn" : null,
      "uid" : "1e9ee6ce053c46b0932358c8503a26fd",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "environment" : {
          "name" : "raboenv1",
          "shortName" : "raboenv1",
          "visibility" : "public",
          "color" : null,
          "description" : "environment",
          "uid" : "047ab08009fe4da8be6905b55552ab52",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "instance" : {
              "href" : "...",
              "templated" : true,
              "title" : "An instance"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "application" : {
          "type" : "Java",
          "shortName" : "rabo_app1",
          "visibility" : "public",
          "owners" : {
            "name" : "Application-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "description" : null,
          "uid" : "5ffc4240fcdf4a479a16f2b0b12ab909",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationPrincipal" : {
          "href" : "...",
          "title" : "A principal for application"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "delete" : {
          "href" : "...",
          "title" : "Indication that this entity can be deleted"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

ApplicationAccess

An ApplicationAccess defines the access type held by an Application on a Stream. There are two access types supported: PRODUCER and CONSUMER.

A PRODUCER access type indicates that the application will produce messages to the stream.

A CONSUMER access type indicates that the application will consume messages from the stream.

The /application_access resource is used to create and list ApplicationAccess.

An ApplicationAccess contains a collection of StreamAuthorization which describes the Environment where the ApplicationAccess is active. These authorizations can be managed at /application_access/uid/authorizations endpoint.

An Application can have multiple ApplicationAccess types (PRODUCER and CONSUMER) on a single Stream.

ApplicationAccess Schema

The /application_access resource uses the following json-schema:

GET /profile/application_access HTTP/1.1
Accept: application/schema+json
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 1280
Content-Type: application/schema+json;charset=UTF-8

{
  "title" : "Application access",
  "properties" : {
    "accessType" : {
      "title" : "Access type",
      "readOnly" : false,
      "type" : "string",
      "enum" : [ "PRODUCER", "CONSUMER" ]
    },
    "grants" : {
      "title" : "Grants",
      "readOnly" : true,
      "type" : "string",
      "format" : "uri"
    },
    "uid" : {
      "title" : "Uid",
      "readOnly" : true,
      "type" : "string"
    },
    "application" : {
      "title" : "Application",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "stream" : {
      "title" : "Stream",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "modified_by" : {
      "title" : "Modified by",
      "readOnly" : false,
      "type" : "string"
    },
    "created_at" : {
      "title" : "Created at",
      "readOnly" : true,
      "type" : "string",
      "format" : "date-time"
    },
    "modified_at" : {
      "title" : "Modified at",
      "readOnly" : false,
      "type" : "string",
      "format" : "date-time"
    },
    "created_by" : {
      "title" : "Created by",
      "readOnly" : true,
      "type" : "string"
    }
  },
  "definitions" : { },
  "type" : "object",
  "$schema" : "http://json-schema.org/draft-04/schema#"
}

List all application access

HTTP method GET is disabled for /application_access. Refer to search endpoints to find one or more ApplicationAccess for a Stream or an Application or both.

Create application access

A POST request is used to create a new ApplicationAccess. The request should include reference to a valid existing stream and application.

Request fields

Path Type Description Constraints

accessType

String

The access type of the application. Can be PRODUCER or CONSUMER only.

Must not be null

application

String

A valid URI of an existing Application

Must not be null

stream

String

A valid URI of an existing Stream

Must not be null

Curl request

$ curl 'http://api.example.com/application_access' -i -X POST \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "accessType" : "PRODUCER",
  "application" : "http://api.example.com/applications/5ffc4240fcdf4a479a16f2b0b12ab909",
  "stream" : "http://api.example.com/streams/91105915be694c0d9dd2301ff54153f0"
}'

HTTP request

POST /application_access HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Content-Type: application/json;charset=UTF-8
Accept: application/hal+json
Content-Length: 201
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "accessType" : "PRODUCER",
  "application" : "http://api.example.com/applications/5ffc4240fcdf4a479a16f2b0b12ab909",
  "stream" : "http://api.example.com/streams/91105915be694c0d9dd2301ff54153f0"
}

HTTP response

HTTP/1.1 201 Created
Last-Modified: Thu, 22 Apr 2021 14:34:27 GMT
Location: http://api.example.com/application_access/afe4408bf55646488367a02c7021675e
Content-Length: 3194
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8

{
  "accessType" : "PRODUCER",
  "uid" : "afe4408bf55646488367a02c7021675e",
  "created_at" : "2021-04-22T14:34:27.813722",
  "modified_at" : "2021-04-22T14:34:27.813722",
  "created_by" : "poweruser@rabobank.nl",
  "modified_by" : "poweruser@rabobank.nl",
  "_embedded" : {
    "application" : {
      "type" : "Java",
      "shortName" : "rabo_app1",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "5ffc4240fcdf4a479a16f2b0b12ab909",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    },
    "stream" : {
      "name" : "rabo-stream3",
      "owners" : {
        "name" : "Team Null",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "514d4e9a834841699644c2420b439553",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "retentionPolicy" : "delete",
      "integrity" : null,
      "confidentiality" : null,
      "description" : null,
      "uid" : "91105915be694c0d9dd2301ff54153f0",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "keySchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for key"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "valueSchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for value"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "applicationAccess" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access declarations for streams of an application"
    },
    "createApplicationAccessGrant" : {
      "href" : "..."
    },
    "grants" : {
      "href" : "...",
      "templated" : true
    },
    "stream" : {
      "href" : "...",
      "templated" : true,
      "title" : "A stream"
    },
    "application" : {
      "href" : "...",
      "templated" : true,
      "title" : "An application"
    }
  }
}

Retrieve application access

The application_access/{id} resource is used to retrieve a single access of an application.

A GET request will retrieve the details of a ApplicationAccess.

HTTP request

GET /application_access/fedb6478bfd640caa02f5e5893c62bf0 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 5426
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "accessType" : "PRODUCER",
  "uid" : "fedb6478bfd640caa02f5e5893c62bf0",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_embedded" : {
    "grants" : [ {
      "comment" : null,
      "status" : "Pending",
      "environment" : {
        "properties" : { },
        "name" : "raboenv1",
        "shortName" : "raboenv1",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Stream owner",
        "visibility" : "public",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : false,
        "autoApproved" : false,
        "uid" : "047ab08009fe4da8be6905b55552ab52",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "cc13e0110f7b45ec98d62f6ff8136ad6",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    }, {
      "comment" : null,
      "status" : "Approved",
      "environment" : {
        "properties" : { },
        "name" : "raboenv2",
        "shortName" : "raboenv2",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Stream owner",
        "visibility" : "public",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : false,
        "autoApproved" : false,
        "uid" : "e11ee2dd976647109ca904dd8adc050f",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "764c61795cc4438ca8ea5aca262c8e70",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    } ],
    "application" : {
      "type" : "Java",
      "shortName" : "rabo_app1",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "5ffc4240fcdf4a479a16f2b0b12ab909",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    },
    "stream" : {
      "name" : "rabo-stream1",
      "owners" : {
        "name" : "Stream-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "retentionPolicy" : "delete",
      "integrity" : null,
      "confidentiality" : null,
      "description" : null,
      "uid" : "066f5944d16344f88c9214d240d139dc",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "keySchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for key"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "valueSchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for value"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "applicationAccess" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access declarations for streams of an application"
    },
    "createApplicationAccessGrant" : {
      "href" : "..."
    },
    "grants" : {
      "href" : "...",
      "templated" : true
    },
    "stream" : {
      "href" : "...",
      "templated" : true,
      "title" : "A stream"
    },
    "application" : {
      "href" : "...",
      "templated" : true,
      "title" : "An application"
    }
  }
}
Relation Description

stream

The Stream this access refers to.

application

The Application requesting the access.

grants

All ApplicationAccessGrant created on this ApplicationAccess

createApplicationAccessGrant

Link to indicate that the currently authenticated user can create application access requests

Update application access

HTTP method PATCH and PUT is disabled for /application_access. Once an application access is created, it cannot be modified. Instead delete and create a new one.

ApplicationAccess search endpoints

/application_access/search/findByApplication

Returns all application access for given Application.

Parameter Description

application

A valid URI of an existing Application

GET /application_access/search/findByApplication?application=http%3A%2F%2Flocalhost%2Fapplications%2F5ffc4240fcdf4a479a16f2b0b12ab909 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 6368

{
  "_embedded" : {
    "application_access" : [ {
      "accessType" : "PRODUCER",
      "uid" : "fedb6478bfd640caa02f5e5893c62bf0",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "grants" : [ {
          "comment" : null,
          "status" : "Pending",
          "environment" : {
            "properties" : { },
            "name" : "raboenv1",
            "shortName" : "raboenv1",
            "description" : "environment",
            "color" : null,
            "authorizationIssuer" : "Stream owner",
            "visibility" : "public",
            "retentionTime" : 604800000,
            "partitions" : 12,
            "private" : false,
            "autoApproved" : false,
            "uid" : "047ab08009fe4da8be6905b55552ab52",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : "2018-06-07T23:16:23.774",
            "created_by" : null,
            "modified_by" : null
          },
          "requestedAt" : null,
          "requestedBy" : null,
          "processedAt" : null,
          "processedBy" : null,
          "uid" : "cc13e0110f7b45ec98d62f6ff8136ad6",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "environment" : {
              "href" : "...",
              "templated" : true,
              "title" : "An environment"
            }
          }
        }, {
          "comment" : null,
          "status" : "Approved",
          "environment" : {
            "properties" : { },
            "name" : "raboenv2",
            "shortName" : "raboenv2",
            "description" : "environment",
            "color" : null,
            "authorizationIssuer" : "Stream owner",
            "visibility" : "public",
            "retentionTime" : 604800000,
            "partitions" : 12,
            "private" : false,
            "autoApproved" : false,
            "uid" : "e11ee2dd976647109ca904dd8adc050f",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : "2018-06-07T23:16:23.774",
            "created_by" : null,
            "modified_by" : null
          },
          "requestedAt" : null,
          "requestedBy" : null,
          "processedAt" : null,
          "processedBy" : null,
          "uid" : "764c61795cc4438ca8ea5aca262c8e70",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "environment" : {
              "href" : "...",
              "templated" : true,
              "title" : "An environment"
            }
          }
        } ],
        "application" : {
          "type" : "Java",
          "shortName" : "rabo_app1",
          "visibility" : "public",
          "owners" : {
            "name" : "Application-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "description" : null,
          "uid" : "5ffc4240fcdf4a479a16f2b0b12ab909",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "stream" : {
          "name" : "rabo-stream1",
          "owners" : {
            "name" : "Stream-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "retentionPolicy" : "delete",
          "integrity" : null,
          "confidentiality" : null,
          "description" : null,
          "uid" : "066f5944d16344f88c9214d240d139dc",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "keySchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for key"
            },
            "integrity" : {
              "href" : "...",
              "templated" : true,
              "title" : "The integrity configured for the object"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            },
            "confidentiality" : {
              "href" : "...",
              "templated" : true,
              "title" : "The confidentiality configured for the object"
            },
            "valueSchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for value"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccess" : {
          "href" : "...",
          "templated" : true,
          "title" : "Access declarations for streams of an application"
        },
        "createApplicationAccessGrant" : {
          "href" : "..."
        },
        "grants" : {
          "href" : "...",
          "templated" : true
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

/application_access/search/findByStream

Returns all application access for given Stream.

Parameter Description

stream

A valid URI of an existing Stream

GET /application_access/search/findByStream?stream=http%3A%2F%2Flocalhost%2Fstreams%2F066f5944d16344f88c9214d240d139dc HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 23443
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "application_access" : [ {
      "accessType" : "PRODUCER",
      "uid" : "fedb6478bfd640caa02f5e5893c62bf0",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "grants" : [ {
          "comment" : null,
          "status" : "Pending",
          "environment" : {
            "properties" : { },
            "name" : "raboenv1",
            "shortName" : "raboenv1",
            "description" : "environment",
            "color" : null,
            "authorizationIssuer" : "Stream owner",
            "visibility" : "public",
            "retentionTime" : 604800000,
            "partitions" : 12,
            "private" : false,
            "autoApproved" : false,
            "uid" : "047ab08009fe4da8be6905b55552ab52",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : "2018-06-07T23:16:23.774",
            "created_by" : null,
            "modified_by" : null
          },
          "requestedAt" : null,
          "requestedBy" : null,
          "processedAt" : null,
          "processedBy" : null,
          "uid" : "cc13e0110f7b45ec98d62f6ff8136ad6",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "environment" : {
              "href" : "...",
              "templated" : true,
              "title" : "An environment"
            }
          }
        }, {
          "comment" : null,
          "status" : "Approved",
          "environment" : {
            "properties" : { },
            "name" : "raboenv2",
            "shortName" : "raboenv2",
            "description" : "environment",
            "color" : null,
            "authorizationIssuer" : "Stream owner",
            "visibility" : "public",
            "retentionTime" : 604800000,
            "partitions" : 12,
            "private" : false,
            "autoApproved" : false,
            "uid" : "e11ee2dd976647109ca904dd8adc050f",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : "2018-06-07T23:16:23.774",
            "created_by" : null,
            "modified_by" : null
          },
          "requestedAt" : null,
          "requestedBy" : null,
          "processedAt" : null,
          "processedBy" : null,
          "uid" : "764c61795cc4438ca8ea5aca262c8e70",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "environment" : {
              "href" : "...",
              "templated" : true,
              "title" : "An environment"
            }
          }
        } ],
        "application" : {
          "type" : "Java",
          "shortName" : "rabo_app1",
          "visibility" : "public",
          "owners" : {
            "name" : "Application-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "description" : null,
          "uid" : "5ffc4240fcdf4a479a16f2b0b12ab909",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "stream" : {
          "name" : "rabo-stream1",
          "owners" : {
            "name" : "Stream-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "retentionPolicy" : "delete",
          "integrity" : null,
          "confidentiality" : null,
          "description" : null,
          "uid" : "066f5944d16344f88c9214d240d139dc",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "keySchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for key"
            },
            "integrity" : {
              "href" : "...",
              "templated" : true,
              "title" : "The integrity configured for the object"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            },
            "confidentiality" : {
              "href" : "...",
              "templated" : true,
              "title" : "The confidentiality configured for the object"
            },
            "valueSchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for value"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccess" : {
          "href" : "...",
          "templated" : true,
          "title" : "Access declarations for streams of an application"
        },
        "createApplicationAccessGrant" : {
          "href" : "..."
        },
        "grants" : {
          "href" : "...",
          "templated" : true
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        }
      }
    }, {
      "accessType" : "CONSUMER",
      "uid" : "ojxg60zh4pt1i83pdio7fql0zdpw4q85",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "application" : {
          "type" : "Java",
          "shortName" : "rabo_app2",
          "visibility" : "public",
          "owners" : {
            "name" : "Application-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "description" : null,
          "uid" : "39d82d7f34484b53ae1dd47ee8924502",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "stream" : {
          "name" : "rabo-stream1",
          "owners" : {
            "name" : "Stream-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "retentionPolicy" : "delete",
          "integrity" : null,
          "confidentiality" : null,
          "description" : null,
          "uid" : "066f5944d16344f88c9214d240d139dc",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "keySchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for key"
            },
            "integrity" : {
              "href" : "...",
              "templated" : true,
              "title" : "The integrity configured for the object"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            },
            "confidentiality" : {
              "href" : "...",
              "templated" : true,
              "title" : "The confidentiality configured for the object"
            },
            "valueSchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for value"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccess" : {
          "href" : "...",
          "templated" : true,
          "title" : "Access declarations for streams of an application"
        },
        "createApplicationAccessGrant" : {
          "href" : "..."
        },
        "grants" : {
          "href" : "...",
          "templated" : true
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        }
      }
    }, {
      "accessType" : "CONSUMER",
      "uid" : "ojxg60zh4pt4203pdio7fql0zdpw4q85",
      "created_at" : "2020-11-01T23:16:23.774",
      "modified_at" : "2020-11-01T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "grants" : [ {
          "comment" : null,
          "status" : "Approved",
          "environment" : {
            "properties" : { },
            "name" : "raboprivenv5",
            "shortName" : "raboprivenv5",
            "description" : "environment",
            "color" : null,
            "authorizationIssuer" : "Auto",
            "visibility" : "private",
            "retentionTime" : 604800000,
            "partitions" : 12,
            "private" : true,
            "autoApproved" : true,
            "uid" : "6u2577bclboz97ievex0fv5hvysemooh",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : "2018-06-07T23:16:23.774",
            "created_by" : null,
            "modified_by" : null
          },
          "requestedAt" : null,
          "requestedBy" : null,
          "processedAt" : null,
          "processedBy" : null,
          "uid" : "420ly0dy72gi123r2m2n56m93ht25wy9",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "environment" : {
              "href" : "...",
              "templated" : true,
              "title" : "An environment"
            }
          }
        } ],
        "application" : {
          "type" : "Java",
          "shortName" : "test_revoke",
          "visibility" : "private",
          "owners" : {
            "name" : "Team Kad",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "514d4e9a834841869644c2ad8b439553",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "description" : null,
          "uid" : "39d82d7994484b53ae1de37ee8924512",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "stream" : {
          "name" : "rabo-stream1",
          "owners" : {
            "name" : "Stream-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "retentionPolicy" : "delete",
          "integrity" : null,
          "confidentiality" : null,
          "description" : null,
          "uid" : "066f5944d16344f88c9214d240d139dc",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "keySchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for key"
            },
            "integrity" : {
              "href" : "...",
              "templated" : true,
              "title" : "The integrity configured for the object"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            },
            "confidentiality" : {
              "href" : "...",
              "templated" : true,
              "title" : "The confidentiality configured for the object"
            },
            "valueSchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for value"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccess" : {
          "href" : "...",
          "templated" : true,
          "title" : "Access declarations for streams of an application"
        },
        "createApplicationAccessGrant" : {
          "href" : "..."
        },
        "grants" : {
          "href" : "...",
          "templated" : true
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        }
      }
    }, {
      "accessType" : "PRODUCER",
      "uid" : "d2150841af85449c96d9556a8e0c9290",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "application" : {
          "type" : "Java",
          "shortName" : "rabo_auto_app4",
          "visibility" : "public",
          "owners" : {
            "name" : "Team App Admins",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "514d4oit834841869644c2ad8b439997",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "description" : null,
          "uid" : "aec9e4570f1c4866bef77722e2830d4b",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "stream" : {
          "name" : "rabo-stream1",
          "owners" : {
            "name" : "Stream-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "retentionPolicy" : "delete",
          "integrity" : null,
          "confidentiality" : null,
          "description" : null,
          "uid" : "066f5944d16344f88c9214d240d139dc",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "keySchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for key"
            },
            "integrity" : {
              "href" : "...",
              "templated" : true,
              "title" : "The integrity configured for the object"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            },
            "confidentiality" : {
              "href" : "...",
              "templated" : true,
              "title" : "The confidentiality configured for the object"
            },
            "valueSchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for value"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccess" : {
          "href" : "...",
          "templated" : true,
          "title" : "Access declarations for streams of an application"
        },
        "createApplicationAccessGrant" : {
          "href" : "..."
        },
        "grants" : {
          "href" : "...",
          "templated" : true
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        }
      }
    }, {
      "accessType" : "PRODUCER",
      "uid" : "e3450841af85449c96d9556a8e0c9678",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "grants" : [ {
          "comment" : null,
          "status" : "Rejected",
          "environment" : {
            "properties" : { },
            "name" : "raboenv1",
            "shortName" : "raboenv1",
            "description" : "environment",
            "color" : null,
            "authorizationIssuer" : "Stream owner",
            "visibility" : "public",
            "retentionTime" : 604800000,
            "partitions" : 12,
            "private" : false,
            "autoApproved" : false,
            "uid" : "047ab08009fe4da8be6905b55552ab52",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : "2018-06-07T23:16:23.774",
            "created_by" : null,
            "modified_by" : null
          },
          "requestedAt" : null,
          "requestedBy" : null,
          "processedAt" : null,
          "processedBy" : null,
          "uid" : "dd24e0110f7b45ec98d62f6ff8136ae7",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "environment" : {
              "href" : "...",
              "templated" : true,
              "title" : "An environment"
            }
          }
        } ],
        "application" : {
          "type" : "Java",
          "shortName" : "rabo_app5",
          "visibility" : "public",
          "owners" : {
            "name" : "Team App Admins",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "514d4oit834841869644c2ad8b439997",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "description" : null,
          "uid" : "fdc9e4570f1c4866bef77722e2830d5g",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "stream" : {
          "name" : "rabo-stream1",
          "owners" : {
            "name" : "Stream-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "retentionPolicy" : "delete",
          "integrity" : null,
          "confidentiality" : null,
          "description" : null,
          "uid" : "066f5944d16344f88c9214d240d139dc",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "keySchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for key"
            },
            "integrity" : {
              "href" : "...",
              "templated" : true,
              "title" : "The integrity configured for the object"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            },
            "confidentiality" : {
              "href" : "...",
              "templated" : true,
              "title" : "The confidentiality configured for the object"
            },
            "valueSchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for value"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccess" : {
          "href" : "...",
          "templated" : true,
          "title" : "Access declarations for streams of an application"
        },
        "createApplicationAccessGrant" : {
          "href" : "..."
        },
        "grants" : {
          "href" : "...",
          "templated" : true
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

/application_access/search/findByApplicationAndStream

Returns the access of an Application for a Stream.

Parameter Description

stream

A valid URI of an existing Stream

application

A valid URI of an existing Application

GET /application_access/search/findByApplicationAndStream?stream=http%3A%2F%2Flocalhost%2Fstreams%2F066f5944d16344f88c9214d240d139dc&application=http%3A%2F%2Flocalhost%2Fapplications%2F5ffc4240fcdf4a479a16f2b0b12ab909 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 6368

{
  "_embedded" : {
    "application_access" : [ {
      "accessType" : "PRODUCER",
      "uid" : "fedb6478bfd640caa02f5e5893c62bf0",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "grants" : [ {
          "comment" : null,
          "status" : "Pending",
          "environment" : {
            "properties" : { },
            "name" : "raboenv1",
            "shortName" : "raboenv1",
            "description" : "environment",
            "color" : null,
            "authorizationIssuer" : "Stream owner",
            "visibility" : "public",
            "retentionTime" : 604800000,
            "partitions" : 12,
            "private" : false,
            "autoApproved" : false,
            "uid" : "047ab08009fe4da8be6905b55552ab52",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : "2018-06-07T23:16:23.774",
            "created_by" : null,
            "modified_by" : null
          },
          "requestedAt" : null,
          "requestedBy" : null,
          "processedAt" : null,
          "processedBy" : null,
          "uid" : "cc13e0110f7b45ec98d62f6ff8136ad6",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "environment" : {
              "href" : "...",
              "templated" : true,
              "title" : "An environment"
            }
          }
        }, {
          "comment" : null,
          "status" : "Approved",
          "environment" : {
            "properties" : { },
            "name" : "raboenv2",
            "shortName" : "raboenv2",
            "description" : "environment",
            "color" : null,
            "authorizationIssuer" : "Stream owner",
            "visibility" : "public",
            "retentionTime" : 604800000,
            "partitions" : 12,
            "private" : false,
            "autoApproved" : false,
            "uid" : "e11ee2dd976647109ca904dd8adc050f",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : "2018-06-07T23:16:23.774",
            "created_by" : null,
            "modified_by" : null
          },
          "requestedAt" : null,
          "requestedBy" : null,
          "processedAt" : null,
          "processedBy" : null,
          "uid" : "764c61795cc4438ca8ea5aca262c8e70",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "environment" : {
              "href" : "...",
              "templated" : true,
              "title" : "An environment"
            }
          }
        } ],
        "application" : {
          "type" : "Java",
          "shortName" : "rabo_app1",
          "visibility" : "public",
          "owners" : {
            "name" : "Application-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "description" : null,
          "uid" : "5ffc4240fcdf4a479a16f2b0b12ab909",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "stream" : {
          "name" : "rabo-stream1",
          "owners" : {
            "name" : "Stream-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "retentionPolicy" : "delete",
          "integrity" : null,
          "confidentiality" : null,
          "description" : null,
          "uid" : "066f5944d16344f88c9214d240d139dc",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "keySchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for key"
            },
            "integrity" : {
              "href" : "...",
              "templated" : true,
              "title" : "The integrity configured for the object"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            },
            "confidentiality" : {
              "href" : "...",
              "templated" : true,
              "title" : "The confidentiality configured for the object"
            },
            "valueSchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for value"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccess" : {
          "href" : "...",
          "templated" : true,
          "title" : "Access declarations for streams of an application"
        },
        "createApplicationAccessGrant" : {
          "href" : "..."
        },
        "grants" : {
          "href" : "...",
          "templated" : true
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

/application_access/search/findByEnvironment

Returns all application access for given Environment.

Parameter Description

environment

A valid URI of an existing Environment

GET /application_access/search/findByEnvironment?environment=http%3A%2F%2Flocalhost%2Fenvironments%2F047ab08009fe4da8be6905b55552ab52 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 11282

{
  "_embedded" : {
    "application_access" : [ {
      "accessType" : "PRODUCER",
      "uid" : "fedb6478bfd640caa02f5e5893c62bf0",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "grants" : [ {
          "comment" : null,
          "status" : "Pending",
          "environment" : {
            "properties" : { },
            "name" : "raboenv1",
            "shortName" : "raboenv1",
            "description" : "environment",
            "color" : null,
            "authorizationIssuer" : "Stream owner",
            "visibility" : "public",
            "retentionTime" : 604800000,
            "partitions" : 12,
            "private" : false,
            "autoApproved" : false,
            "uid" : "047ab08009fe4da8be6905b55552ab52",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : "2018-06-07T23:16:23.774",
            "created_by" : null,
            "modified_by" : null
          },
          "requestedAt" : null,
          "requestedBy" : null,
          "processedAt" : null,
          "processedBy" : null,
          "uid" : "cc13e0110f7b45ec98d62f6ff8136ad6",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "environment" : {
              "href" : "...",
              "templated" : true,
              "title" : "An environment"
            }
          }
        }, {
          "comment" : null,
          "status" : "Approved",
          "environment" : {
            "properties" : { },
            "name" : "raboenv2",
            "shortName" : "raboenv2",
            "description" : "environment",
            "color" : null,
            "authorizationIssuer" : "Stream owner",
            "visibility" : "public",
            "retentionTime" : 604800000,
            "partitions" : 12,
            "private" : false,
            "autoApproved" : false,
            "uid" : "e11ee2dd976647109ca904dd8adc050f",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : "2018-06-07T23:16:23.774",
            "created_by" : null,
            "modified_by" : null
          },
          "requestedAt" : null,
          "requestedBy" : null,
          "processedAt" : null,
          "processedBy" : null,
          "uid" : "764c61795cc4438ca8ea5aca262c8e70",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "environment" : {
              "href" : "...",
              "templated" : true,
              "title" : "An environment"
            }
          }
        } ],
        "application" : {
          "type" : "Java",
          "shortName" : "rabo_app1",
          "visibility" : "public",
          "owners" : {
            "name" : "Application-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "description" : null,
          "uid" : "5ffc4240fcdf4a479a16f2b0b12ab909",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "stream" : {
          "name" : "rabo-stream1",
          "owners" : {
            "name" : "Stream-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "retentionPolicy" : "delete",
          "integrity" : null,
          "confidentiality" : null,
          "description" : null,
          "uid" : "066f5944d16344f88c9214d240d139dc",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "keySchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for key"
            },
            "integrity" : {
              "href" : "...",
              "templated" : true,
              "title" : "The integrity configured for the object"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            },
            "confidentiality" : {
              "href" : "...",
              "templated" : true,
              "title" : "The confidentiality configured for the object"
            },
            "valueSchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for value"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccess" : {
          "href" : "...",
          "templated" : true,
          "title" : "Access declarations for streams of an application"
        },
        "createApplicationAccessGrant" : {
          "href" : "..."
        },
        "grants" : {
          "href" : "...",
          "templated" : true
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        }
      }
    }, {
      "accessType" : "PRODUCER",
      "uid" : "e3450841af85449c96d9556a8e0c9678",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "grants" : [ {
          "comment" : null,
          "status" : "Rejected",
          "environment" : {
            "properties" : { },
            "name" : "raboenv1",
            "shortName" : "raboenv1",
            "description" : "environment",
            "color" : null,
            "authorizationIssuer" : "Stream owner",
            "visibility" : "public",
            "retentionTime" : 604800000,
            "partitions" : 12,
            "private" : false,
            "autoApproved" : false,
            "uid" : "047ab08009fe4da8be6905b55552ab52",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : "2018-06-07T23:16:23.774",
            "created_by" : null,
            "modified_by" : null
          },
          "requestedAt" : null,
          "requestedBy" : null,
          "processedAt" : null,
          "processedBy" : null,
          "uid" : "dd24e0110f7b45ec98d62f6ff8136ae7",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "environment" : {
              "href" : "...",
              "templated" : true,
              "title" : "An environment"
            }
          }
        } ],
        "application" : {
          "type" : "Java",
          "shortName" : "rabo_app5",
          "visibility" : "public",
          "owners" : {
            "name" : "Team App Admins",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "514d4oit834841869644c2ad8b439997",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "description" : null,
          "uid" : "fdc9e4570f1c4866bef77722e2830d5g",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "stream" : {
          "name" : "rabo-stream1",
          "owners" : {
            "name" : "Stream-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "retentionPolicy" : "delete",
          "integrity" : null,
          "confidentiality" : null,
          "description" : null,
          "uid" : "066f5944d16344f88c9214d240d139dc",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "keySchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for key"
            },
            "integrity" : {
              "href" : "...",
              "templated" : true,
              "title" : "The integrity configured for the object"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            },
            "confidentiality" : {
              "href" : "...",
              "templated" : true,
              "title" : "The confidentiality configured for the object"
            },
            "valueSchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for value"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccess" : {
          "href" : "...",
          "templated" : true,
          "title" : "Access declarations for streams of an application"
        },
        "createApplicationAccessGrant" : {
          "href" : "..."
        },
        "grants" : {
          "href" : "...",
          "templated" : true
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

/application_access/search/findByGrantsContaining

Returns all application access for given ApplicationAccessGrant.

Parameter Description

applicationAccessGrant

A valid URI of an existing Application Access Grant

GET /application_access/search/findByGrantsContaining?applicationAccessGrant=http%3A%2F%2Flocalhost%2Fapplication_access_grants%2F764c61795cc4438ca8ea5aca262c8e70 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 5426
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "accessType" : "PRODUCER",
  "uid" : "fedb6478bfd640caa02f5e5893c62bf0",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_embedded" : {
    "grants" : [ {
      "comment" : null,
      "status" : "Pending",
      "environment" : {
        "properties" : { },
        "name" : "raboenv1",
        "shortName" : "raboenv1",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Stream owner",
        "visibility" : "public",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : false,
        "autoApproved" : false,
        "uid" : "047ab08009fe4da8be6905b55552ab52",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "cc13e0110f7b45ec98d62f6ff8136ad6",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    }, {
      "comment" : null,
      "status" : "Approved",
      "environment" : {
        "properties" : { },
        "name" : "raboenv2",
        "shortName" : "raboenv2",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Stream owner",
        "visibility" : "public",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : false,
        "autoApproved" : false,
        "uid" : "e11ee2dd976647109ca904dd8adc050f",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "764c61795cc4438ca8ea5aca262c8e70",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    } ],
    "application" : {
      "type" : "Java",
      "shortName" : "rabo_app1",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "5ffc4240fcdf4a479a16f2b0b12ab909",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    },
    "stream" : {
      "name" : "rabo-stream1",
      "owners" : {
        "name" : "Stream-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "retentionPolicy" : "delete",
      "integrity" : null,
      "confidentiality" : null,
      "description" : null,
      "uid" : "066f5944d16344f88c9214d240d139dc",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "keySchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for key"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "valueSchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for value"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "applicationAccess" : {
      "href" : "...",
      "templated" : true,
      "title" : "Access declarations for streams of an application"
    },
    "createApplicationAccessGrant" : {
      "href" : "..."
    },
    "grants" : {
      "href" : "...",
      "templated" : true
    },
    "stream" : {
      "href" : "...",
      "templated" : true,
      "title" : "A stream"
    },
    "application" : {
      "href" : "...",
      "templated" : true,
      "title" : "An application"
    }
  }
}

Managing ApplicationAccessGrant (Access per Environment)

In order to be able to request access for an ApplicationAccess on one or more Environment, application owner needs to create an ApplicationAccessGrant.

Create an ApplicationAccessGrant

A POST is used to create an ApplicationAccessGrant on one or more Environment. The request should include references to a valid existing environment.

HTTP request
POST /application_access/d2150841af85449c96d9556a8e0c9290/grants HTTP/1.1
realm: rabo
Content-Type: text/uri-list
Host: api.example.com
Content-Length: 62
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

http://localhost/environments/047ab08009fe4da8be6905b55552ab52
HTTP response
HTTP/1.1 201 Created
Location: http://api.example.com/application_access_grants/94614a20e9924cda85672df7d80cde76

Cancel a pending ApplicationAccessGrant

To cancel a grant that was already requested (in Pending state), call DELETE method on /application_access_grants/uid endpoint. The URI of the environments should be included in the request body.

HTTP request
DELETE /application_access_grants/cc13e0110f7b45ec98d62f6ff8136ad6 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN
HTTP response
HTTP/1.1 204 No Content

Approve a pending ApplicationAccessGrant

The endpoint /application_access/uid/authorizations is deprecated. Please refer to Approve a pending ApplicationAccessGrant for requesting/approving an application access grant.

The StreamOwner needs to approve a pending ApplicationAccessGrant.

These can be done by using PUT method on /application_access_grants/uid.

HTTP request
PUT /application_access_grants/cc13e0110f7b45ec98d62f6ff8136ad6 HTTP/1.1
realm: rabo
Content-Type: text/uri-list
Host: api.example.com
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN
HTTP response
HTTP/1.1 204 No Content

Revoke/Deny an authorization request for an Environment

The endpoint /application_access/uid/authorizations is deprecated. Please refer to Revoke/Deny an authorization request for an Environment for requesting/approving an application access grant.

StreamOwner can DENY or REVOKE an ApplicationAccessGrant by using DELETE method on application_access/uid/grants. It’s also possible to specify a comment/reason beside the request.

EnvironmentOwner can REVOKE an ApplicationAccessGrant for their PRIVATE environments.
HTTP request
DELETE /application_access/fedb6478bfd640caa02f5e5893c62bf0/grants HTTP/1.1
realm: rabo
Host: api.example.com
Content-Length: 115
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "reason" : "Not allowed.",
  "environment" : "http://localhost/environments/e11ee2dd976647109ca904dd8adc050f"
}
HTTP response
HTTP/1.1 204 No Content

Searching grants by Stream

In order to search for grants for a specific Stream call the endpoint application_access_grants/search/findByStream.

Request parameters
Parameter Description

stream

The stream to search for

HTTP request
GET /application_access_grants/search/findByStream?stream=http%3A%2F%2Flocalhost%2Fstreams%2F066f5944d16344f88c9214d240d139dc HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP response
HTTP/1.1 200 OK
Content-Length: 4953
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "application_access_grants" : [ {
      "comment" : null,
      "status" : "Approved",
      "environment" : {
        "properties" : { },
        "name" : "raboenv2",
        "shortName" : "raboenv2",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Stream owner",
        "visibility" : "public",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : false,
        "autoApproved" : false,
        "uid" : "e11ee2dd976647109ca904dd8adc050f",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "764c61795cc4438ca8ea5aca262c8e70",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccessGrant" : {
          "href" : "...",
          "templated" : true
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    }, {
      "comment" : null,
      "status" : "Pending",
      "environment" : {
        "properties" : { },
        "name" : "raboenv1",
        "shortName" : "raboenv1",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Stream owner",
        "visibility" : "public",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : false,
        "autoApproved" : false,
        "uid" : "047ab08009fe4da8be6905b55552ab52",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "cc13e0110f7b45ec98d62f6ff8136ad6",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccessGrant" : {
          "href" : "...",
          "templated" : true
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    }, {
      "comment" : null,
      "status" : "Approved",
      "environment" : {
        "properties" : { },
        "name" : "raboprivenv5",
        "shortName" : "raboprivenv5",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Auto",
        "visibility" : "private",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : true,
        "autoApproved" : true,
        "uid" : "6u2577bclboz97ievex0fv5hvysemooh",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "420ly0dy72gi123r2m2n56m93ht25wy9",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccessGrant" : {
          "href" : "...",
          "templated" : true
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    }, {
      "comment" : null,
      "status" : "Rejected",
      "environment" : {
        "properties" : { },
        "name" : "raboenv1",
        "shortName" : "raboenv1",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Stream owner",
        "visibility" : "public",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : false,
        "autoApproved" : false,
        "uid" : "047ab08009fe4da8be6905b55552ab52",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "dd24e0110f7b45ec98d62f6ff8136ae7",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccessGrant" : {
          "href" : "...",
          "templated" : true
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

Searching actionable application access requests

In order to search for actionable application access requests for the user that is currently logged in.

Actionable items:

  • ApplicationAccessGrant which is not approved or denied yet

HTTP request
GET /application_access_grants/search/findActionable HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP response
HTTP/1.1 200 OK
Content-Length: 275
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "application_access_grants" : [ ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 0,
    "totalPages" : 0,
    "number" : 0
  }
}

Searching informative application access requests with a specific status type

In order to search for non-actionable (informative) application access requests for the user that is currently logged in for a specific status type.

Status types:

  • PENDING

  • APPROVED

  • REJECTED

  • CANCELLED

  • REVOKED

Non-actionable (informative) items:

  • Items pending

  • Approved

  • Denied

Request parameters
Parameter Description

status

Any valid status as mentioned above.

HTTP request
GET /application_access_grants/search/findInformative?status=PENDING HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1468

{
  "_embedded" : {
    "application_access_grants" : [ {
      "comment" : null,
      "status" : "Pending",
      "environment" : {
        "properties" : { },
        "name" : "raboenv1",
        "shortName" : "raboenv1",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Stream owner",
        "visibility" : "public",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : false,
        "autoApproved" : false,
        "uid" : "047ab08009fe4da8be6905b55552ab52",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "cc13e0110f7b45ec98d62f6ff8136ad6",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccessGrant" : {
          "href" : "...",
          "templated" : true
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}

Searching informative application access requests for all status types

In order to search for non-actionable (informative) application access requests for the user that is currently logged in for all status types.

Non-actionable (informative) items:

  • Items pending

  • Approved

  • Denied

HTTP request
GET /application_access_grants/search/findAllInformative HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP response
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 12221

{
  "_embedded" : {
    "application_access_grants" : [ {
      "comment" : null,
      "status" : "Approved",
      "environment" : {
        "properties" : { },
        "name" : "raboprivenv5",
        "shortName" : "raboprivenv5",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Auto",
        "visibility" : "private",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : true,
        "autoApproved" : true,
        "uid" : "6u2577bclboz97ievex0fv5hvysemooh",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "420ly0dy72gi123r2m2n56m93ht25wy9",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccessGrant" : {
          "href" : "...",
          "templated" : true
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    }, {
      "comment" : null,
      "status" : "Approved",
      "environment" : {
        "properties" : { },
        "name" : "raboprivenv4",
        "shortName" : "raboprivenv4",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Auto",
        "visibility" : "private",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : true,
        "autoApproved" : true,
        "uid" : "83c1b34b0c6744dcadb85f4c188518g5",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "875d61795cc4438ca8ea5aca262c8f80",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccessGrant" : {
          "href" : "...",
          "templated" : true
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    }, {
      "comment" : null,
      "status" : "Rejected",
      "environment" : {
        "properties" : { },
        "name" : "raboprivenv2",
        "shortName" : "raboprivenv2",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Auto",
        "visibility" : "private",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : true,
        "autoApproved" : true,
        "uid" : "61b1b34b0c6744dcadb85f4c188517e5",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "984e61795cc4438ca8ea5aca262c8g91",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccessGrant" : {
          "href" : "...",
          "templated" : true
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    }, {
      "comment" : null,
      "status" : "Approved",
      "environment" : {
        "properties" : { },
        "name" : "raboprivenv5",
        "shortName" : "raboprivenv5",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Auto",
        "visibility" : "private",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : true,
        "autoApproved" : true,
        "uid" : "6u2577bclboz97ievex0fv5hvysemooh",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "oqqly0dy72gi1npr2mfl56m99mt25wy9",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccessGrant" : {
          "href" : "...",
          "templated" : true
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    }, {
      "comment" : null,
      "status" : "Cancelled",
      "environment" : {
        "properties" : { },
        "name" : "raboenv1",
        "shortName" : "raboenv1",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Stream owner",
        "visibility" : "public",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : false,
        "autoApproved" : false,
        "uid" : "047ab08009fe4da8be6905b55552ab52",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "cc13e0110f7b45ec98d62f6ff8136ad4",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccessGrant" : {
          "href" : "...",
          "templated" : true
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    }, {
      "comment" : null,
      "status" : "Pending",
      "environment" : {
        "properties" : { },
        "name" : "raboenv1",
        "shortName" : "raboenv1",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Stream owner",
        "visibility" : "public",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : false,
        "autoApproved" : false,
        "uid" : "047ab08009fe4da8be6905b55552ab52",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "cc13e0110f7b45ec98d62f6ff8136ad6",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccessGrant" : {
          "href" : "...",
          "templated" : true
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    }, {
      "comment" : null,
      "status" : "Approved",
      "environment" : {
        "properties" : { },
        "name" : "raboenv2",
        "shortName" : "raboenv2",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Stream owner",
        "visibility" : "public",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : false,
        "autoApproved" : false,
        "uid" : "e11ee2dd976647109ca904dd8adc050f",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "764c61795cc4438ca8ea5aca262c8e70",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccessGrant" : {
          "href" : "...",
          "templated" : true
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    }, {
      "comment" : null,
      "status" : "Approved",
      "environment" : {
        "properties" : { },
        "name" : "raboenv1",
        "shortName" : "raboenv1",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Stream owner",
        "visibility" : "public",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : false,
        "autoApproved" : false,
        "uid" : "047ab08009fe4da8be6905b55552ab52",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "dd23e0110f7b45ec98d62f6ff8136ad6",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccessGrant" : {
          "href" : "...",
          "templated" : true
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    }, {
      "comment" : null,
      "status" : "Approved",
      "environment" : {
        "properties" : { },
        "name" : "raboenv1",
        "shortName" : "raboenv1",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Stream owner",
        "visibility" : "public",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : false,
        "autoApproved" : false,
        "uid" : "047ab08009fe4da8be6905b55552ab52",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "fh33e0110f7b45ec98d62f6ff8137bf6",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccessGrant" : {
          "href" : "...",
          "templated" : true
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    }, {
      "comment" : null,
      "status" : "Rejected",
      "environment" : {
        "properties" : { },
        "name" : "raboenv1",
        "shortName" : "raboenv1",
        "description" : "environment",
        "color" : null,
        "authorizationIssuer" : "Stream owner",
        "visibility" : "public",
        "retentionTime" : 604800000,
        "partitions" : 12,
        "private" : false,
        "autoApproved" : false,
        "uid" : "047ab08009fe4da8be6905b55552ab52",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "requestedAt" : null,
      "requestedBy" : null,
      "processedAt" : null,
      "processedBy" : null,
      "uid" : "dd24e0110f7b45ec98d62f6ff8136ae7",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationAccessGrant" : {
          "href" : "...",
          "templated" : true
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 10,
    "totalPages" : 1,
    "number" : 0
  }
}

ApplicationDeployments

An ApplicationDeployment stores the configs for complex application types like connector that is saved for an Application on an Environment.

The /application_deployments resource is used to create, update, delete, and list application deployments.

List all application deployments

HTTP method GET is disabled for /application_deployments. Refer to search endpoints to find one or more ApplicationDeployment for an Application or an Environment.

Create Application deployment

A POST request is used to create a new ApplicationDeployment. The request should include reference to a valid existing application and environment.

Request fields

Path Type Description Constraints

configs

Object

Configs for an Application Deployment

environment

String

A valid URI of an existing Environment

application

String

A valid URI of an existing Application

Curl request

$ curl 'http://api.example.com/application_deployments' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "configs" : {
    "configKey" : "configValue"
  },
  "application" : "http://api.example.com/applications/lmk9f4670h1c4866deg78722e2931e5g",
  "environment" : "http://api.example.com/environments/047ab08009fe4da8be6905b55552ab52"
}'

HTTP request

POST /application_deployments HTTP/1.1
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Content-Length: 235
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "configs" : {
    "configKey" : "configValue"
  },
  "application" : "http://api.example.com/applications/lmk9f4670h1c4866deg78722e2931e5g",
  "environment" : "http://api.example.com/environments/047ab08009fe4da8be6905b55552ab52"
}

HTTP response

HTTP/1.1 201 Created
Location: http://api.example.com/application_deployments/ca78ce59c5ef40a28cc8ea9d2232f126

Retrieve application deployment

The application_deployments/{id} resource is used to retrieve a single deployment of an application for an environment.

A GET request will retrieve the details of a ApplicationDeployment.

HTTP request

GET /application_deployments/1e9ee6ce053c46b0932358c7403a56fd HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 2437
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "configs" : {
    "keyConfig1" : "valueConfig1"
  },
  "state" : "Undeployed",
  "uid" : "1e9ee6ce053c46b0932358c7403a56fd",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_embedded" : {
    "environment" : {
      "name" : "raboenv1",
      "shortName" : "raboenv1",
      "visibility" : "public",
      "color" : null,
      "description" : "environment",
      "uid" : "047ab08009fe4da8be6905b55552ab52",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    },
    "application" : {
      "type" : "SINK",
      "shortName" : "rabo_app6",
      "visibility" : "public",
      "owners" : {
        "name" : "Application-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "dbc9e4670h1c4866deg78722e2930d2g",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "applicationDeployment" : {
      "href" : "..."
    },
    "start" : {
      "href" : "..."
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    },
    "environment" : {
      "href" : "...",
      "templated" : true,
      "title" : "An environment"
    },
    "application" : {
      "href" : "...",
      "templated" : true,
      "title" : "An application"
    }
  }
}
Relation Description

start

Existence of this link indicates that the currently authenticated user can start this Application

Restart connector’s task

The application_deployments/{id}/task/{taskId}/operation resource is used to restart connector task.

A GET request will restart the connector task using taskId.

Request fields

Snippet request-fields not found for operation::restart-connector-task

HTTP request

PUT /application_deployments/1e9ee6ce053c46b0932358c7403a56fd/task/2/operation HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN
Content-Type: application/x-www-form-urlencoded

action=RESTART_TASK

HTTP response

HTTP/1.1 204 No Content

Retrieve connector config from application deployment

The application_deployments/{id}/config resource is used to retrieve a connector config.

A GET request will retrieve the details of a ApplicationDeployment Connector Config.

HTTP request

GET /application_deployments/1e9ee6ce053c46b0932358c7403a56fd/config HTTP/1.1
Accept: application/json
realm: rabo
Host: api.example.com
Authorization: Bearer token

HTTP response

HTTP/1.1 200 OK
Content-Length: 1940
Content-Type: application/json;charset=UTF-8

{
  "pluginConfigs" : [ {
    "name" : "connector.class",
    "type" : "STRING",
    "required" : true,
    "defaultValue" : null,
    "importance" : "HIGH",
    "documentation" : "Name or alias of the class for this connector. Must be a subclass of org.apache.kafka.connect.connector.Connector. If the connector is org.apache.kafka.connect.file.FileStreamSinkConnector, you can either specify this full name,  or use \\\"FileStreamSink\\\" or \\\"FileStreamSinkConnector\\\" to make the configuration a bit shorter",
    "providedValue" : null
  }, {
    "name" : "key.converter",
    "type" : "CLASS",
    "required" : false,
    "defaultValue" : null,
    "importance" : "LOW",
    "documentation" : null,
    "providedValue" : null
  }, {
    "name" : "keyConfig1",
    "type" : null,
    "required" : false,
    "defaultValue" : null,
    "importance" : null,
    "documentation" : null,
    "providedValue" : "valueConfig1"
  }, {
    "name" : "logger.name",
    "type" : "STRING",
    "required" : true,
    "defaultValue" : null,
    "importance" : "HIGH",
    "documentation" : "The name of the SLF4J Logger to write the messages",
    "providedValue" : null
  }, {
    "name" : "name",
    "type" : "STRING",
    "required" : true,
    "defaultValue" : null,
    "importance" : "HIGH",
    "documentation" : "Globally unique name to use for this connector.",
    "providedValue" : null
  }, {
    "name" : "tasks.max",
    "type" : "INT",
    "required" : false,
    "defaultValue" : null,
    "importance" : null,
    "documentation" : null,
    "providedValue" : null
  }, {
    "name" : "transforms",
    "type" : "LIST",
    "required" : false,
    "defaultValue" : "",
    "importance" : "LOW",
    "documentation" : "Aliases for the transformations to be applied to records.",
    "providedValue" : null
  } ],
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

Snippet links not found for operation::config-info-by-application-deployment-with-config

Retrieve default connector config from application deployment

The application_deployments/{id}/config resource is used to retrieve a connector config.

A GET request will retrieve the details of a Default Connector Config.

HTTP request

GET /application_deployments/3g9ff6ce053c46b0932358c7403a58fz/config HTTP/1.1
Accept: application/json
realm: rabo
Host: api.example.com
Authorization: Bearer token

HTTP response

HTTP/1.1 200 OK
Content-Length: 339
Content-Type: application/json;charset=UTF-8

{
  "pluginConfigs" : [ {
    "name" : "defaults_key4",
    "type" : null,
    "required" : false,
    "defaultValue" : null,
    "importance" : null,
    "documentation" : null,
    "providedValue" : "defaults_value4"
  } ],
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

Snippet links not found for operation::default-config-info-by-application-deployment-without-config

Update application deployment

A PUT request is used to update a ApplicationDeployment. Only configs field can be modified. If application or environment needs to be updated, delete the ApplicationDeployment and create a new one.

$ curl 'http://api.example.com/application_deployments/1e9ee6ce053c46b0932358c7403a56fd' -i -X PUT \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "configs" : {
    "key" : "value"
  }
}'
PUT /application_deployments/1e9ee6ce053c46b0932358c7403a56fd HTTP/1.1
Content-Length: 43
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "configs" : {
    "key" : "value"
  }
}
HTTP/1.1 204 No Content
ETag: "0"
Location: http://api.example.com/application_deployments/1e9ee6ce053c46b0932358c7403a56fd

Delete application deployment

A DELETE request is used to delete an ApplicationDeployment.

$ curl 'http://api.example.com/application_deployments/3g9ff6ce053c46b0932358c7403a58ff' -i -X DELETE \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN'
DELETE /application_deployments/3g9ff6ce053c46b0932358c7403a58ff HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN
HTTP/1.1 204 No Content

ApplicationDeployments search endpoints

/application_deployments/search/findByApplicationAndEnvironment

Returns application deployments for given Application and Environment.

Parameter Description

application

A valid URI of an existing Application

environment

A valid URI of an existing Environment

GET /application_deployments/search/findByApplicationAndEnvironment?application=http%3A%2F%2Flocalhost%2Fapplications%2Fdbc9e4670h1c4866deg78722e2930d2g&environment=http%3A%2F%2Flocalhost%2Fenvironments%2F047ab08009fe4da8be6905b55552ab52 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 2996

{
  "_embedded" : {
    "application_deployments" : [ {
      "configs" : {
        "keyConfig1" : "valueConfig1"
      },
      "state" : "Undeployed",
      "uid" : "1e9ee6ce053c46b0932358c7403a56fd",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "environment" : {
          "name" : "raboenv1",
          "shortName" : "raboenv1",
          "visibility" : "public",
          "color" : null,
          "description" : "environment",
          "uid" : "047ab08009fe4da8be6905b55552ab52",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "instance" : {
              "href" : "...",
              "templated" : true,
              "title" : "An instance"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "application" : {
          "type" : "SINK",
          "shortName" : "rabo_app6",
          "visibility" : "public",
          "owners" : {
            "name" : "Application-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "c339c5cf9b5a4f6b8342c6ea2f9b6775",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "description" : null,
          "uid" : "dbc9e4670h1c4866deg78722e2930d2g",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "applicationDeployment" : {
          "href" : "..."
        },
        "start" : {
          "href" : "..."
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "delete" : {
          "href" : "...",
          "title" : "Indication that this entity can be deleted"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "application" : {
          "href" : "...",
          "templated" : true,
          "title" : "An application"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

Delete application deployment

A DELETE request is used to delete an ApplicationDeployment.

$ curl 'http://api.example.com/application_deployments/3g9ff6ce053c46b0932358c7403a58ff' -i -X DELETE \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN'
DELETE /application_deployments/3g9ff6ce053c46b0932358c7403a58ff HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN
HTTP/1.1 204 No Content

ApplicationDeployments Perform action

/application_deployments/operation

Perform an action for an application deployment : The valid actions are: START, STOP, RESET, DELETE.

Parameter Description

action

A valid action to perform on the deployment

PUT /application_deployments/1e9ee6ce053c46b0932358c7403a56fd/operation HTTP/1.1
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

action=START
HTTP/1.1 204 No Content

ApplicationDeployments Get status

/application_deployments/status

Returns the real time status of the application_deployment , along with the status for the tasks associated to the application_deployment.

$ curl 'http://api.example.com/application_deployments/1e9ee6ce053c46b0932358c7403a56fd/status' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
GET /application_deployments/1e9ee6ce053c46b0932358c7403a56fd/status HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 235

{
  "connectorState" : {
    "state" : "Undefined",
    "workerId" : null,
    "trace" : null
  },
  "taskStates" : null,
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

Streams

A Stream is a continuous flow of similar events (messages) grouped together under a single identity.

The streams resource is used to create and list Streams.

Stream Schema

The streams resource uses the following json-schema:

GET /profile/streams HTTP/1.1
Accept: application/schema+json
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 2204
Content-Type: application/schema+json;charset=UTF-8

{
  "title" : "Stream",
  "properties" : {
    "confidentiality" : {
      "title" : "Confidentiality",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "description" : {
      "title" : "Description",
      "readOnly" : false,
      "type" : "string"
    },
    "keySchema" : {
      "title" : "Key schema",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "created_at" : {
      "title" : "Created at",
      "readOnly" : true,
      "type" : "string",
      "format" : "date-time"
    },
    "owners" : {
      "title" : "Owners",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "created_by" : {
      "title" : "Created by",
      "readOnly" : true,
      "type" : "string"
    },
    "valueSchema" : {
      "title" : "Value schema",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "uid" : {
      "title" : "Uid",
      "readOnly" : true,
      "type" : "string"
    },
    "integrity" : {
      "title" : "Integrity",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "valueType" : {
      "title" : "Value type",
      "readOnly" : false,
      "type" : "string",
      "enum" : [ "AVRO", "JSON", "String", "Binary", "Xml" ]
    },
    "name" : {
      "title" : "Name",
      "readOnly" : false,
      "type" : "string"
    },
    "modified_by" : {
      "title" : "Modified by",
      "readOnly" : false,
      "type" : "string"
    },
    "retentionPolicy" : {
      "title" : "Retention policy",
      "readOnly" : false,
      "type" : "string",
      "enum" : [ "delete", "compact" ]
    },
    "keyType" : {
      "title" : "Key type",
      "readOnly" : false,
      "type" : "string",
      "enum" : [ "AVRO", "JSON", "String", "Binary", "Xml" ]
    },
    "modified_at" : {
      "title" : "Modified at",
      "readOnly" : false,
      "type" : "string",
      "format" : "date-time"
    },
    "properties" : {
      "title" : "Properties",
      "readOnly" : false,
      "type" : "object"
    }
  },
  "definitions" : { },
  "type" : "object",
  "$schema" : "http://json-schema.org/draft-04/schema#"
}

List all streams

A GET request will list all the Streams visible to the currently logged in user.

Curl request

$ curl 'http://api.example.com/streams' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /streams HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 7451

{
  "_embedded" : {
    "streams" : [ {
      "name" : "rabo-stream1",
      "owners" : {
        "name" : "Stream-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "retentionPolicy" : "delete",
      "integrity" : null,
      "confidentiality" : null,
      "description" : null,
      "uid" : "066f5944d16344f88c9214d240d139dc",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "keySchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for key"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "valueSchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for value"
        }
      }
    }, {
      "name" : "rabo-stream2",
      "owners" : {
        "name" : "Stream-raboApplication2",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "88eb98e0eff34fde923c15687e6d75d5",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "retentionPolicy" : "delete",
      "integrity" : {
        "level" : "L2",
        "description" : "This is level 2",
        "color" : "yellow",
        "uid" : "247ab03ffafe4da2bet905b5e352ab53",
        "created_at" : "2019-06-08T23:16:23.774",
        "modified_at" : "2019-06-08T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "confidentiality" : {
        "level" : "L2",
        "description" : "L2 confidentiality",
        "color" : "blue",
        "uid" : "648ab08009fe4da8be6905b55552ac43",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "a549f500d879419c9f5efa5d3cada7b3",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "keySchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for key"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "valueSchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for value"
        }
      }
    }, {
      "name" : "rabo-stream3",
      "owners" : {
        "name" : "Team Null",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "514d4e9a834841699644c2420b439553",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "retentionPolicy" : "delete",
      "integrity" : null,
      "confidentiality" : null,
      "description" : null,
      "uid" : "91105915be694c0d9dd2301ff54153f0",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "keySchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for key"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "valueSchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for value"
        }
      }
    }, {
      "name" : "rabo-stream4",
      "owners" : {
        "name" : "Team Null",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "514d4e9a834841699644c2420b439553",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "retentionPolicy" : "delete",
      "integrity" : null,
      "confidentiality" : null,
      "description" : null,
      "uid" : "31105915be694c0d9dd2301ff54153f0",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "keySchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for key"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "valueSchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for value"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    },
    "create" : {
      "href" : "...",
      "templated" : true,
      "title" : "Indication that an entity can be created"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 4,
    "totalPages" : 1,
    "number" : 0
  }
}
Relation Description

create

Existence of this link indicates that the currently authenticated user can create a new Stream

Create stream

A POST request is used to create a new stream. A message stored in a stream is a key-value pair. The key is used internally by Kafka while value represents the payload of the message. The key and value could be of different formats. These formats are described in below table.

Data format Description

AVRO

A JSON like data model with sophisticated schema description.

JSON

Data structured in JSON format.

STRING

A plain text data with no format.

BINARY

Low-level binary data

The data format for key and value is specified by keyType and valueType fields. If AVRO format is selected, a separate keySchema and valueSchema must be specified for complete AVRO definition. For all other data formats, these fields can be skipped.

It is possible to have different data formats for key and value.

Request fields

Path Type Description Constraints

name

String

The name of the stream

Must match the regular expression (?i)^[a-z0-9\.\-_ ]+$. Must not be empty. Size must be between 3 and 180 inclusive

description

String

A summary text describing the purpose of this stream.

Size must be between 0 and 200 inclusive

properties

Object

A list of Stream specific variables in Key, Value format.

owners

String

A valid URI of an existing group, must not be null.

Must not be null

retentionPolicy

String

Defines the policy to retain the messages on this stream. Possible values delete, compact. Default is delete. When set to delete, messages will be cleaned up based on the retentionTime property of StreamConfig. If set to compact, latest messages of each key will be retained forever.

keyType

String

Key type of Stream. Can be one of AVRO, JSON, STRING, XML or BINARY

Must not be null

valueType

String

Value type of Stream. Can be one of AVRO, JSON, STRING, XML or BINARY

Must not be null

keySchema

String

A URI of an existing Schema. Only needed when keyType is AVRO.

valueSchema

String

A URI of an existing Schema. Only needed when valueType is AVRO.

integrity

String

A URI of an existing Integrity. Only needed when dataClassificationEnabled for the current Tenant is ON

confidentiality

String

A URI of an existing Confidentiality. Only needed when dataClassificationEnabled for the current Tenant is ON

Curl request

$ curl 'http://api.example.com/streams' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "name" : "general-applicationlog",
  "description" : "Stream to capture application logs",
  "keyType" : "AVRO",
  "valueType" : "AVRO",
  "retentionPolicy" : "delete",
  "keySchema" : "http://api.example.com/schemas/4edccfd6aa744e698542da36f1f01114",
  "valueSchema" : "http://api.example.com/schemas/8bc19be0c9cd4da296acd78e6022edf1",
  "integrity" : "http://api.example.com/integrities/247ab08159fe4da8be6905b55552ab52",
  "confidentiality" : "http://api.example.com/confidentialities/347ab08009fe4da8be6905b55552ab52",
  "owners" : "http://api.example.com/groups/2d8e99afd6e047f69c9595b4f2525fa6"
}'

HTTP request

POST /streams HTTP/1.1
realm: rabo
Host: api.example.com
Content-Length: 606
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "name" : "general-applicationlog",
  "description" : "Stream to capture application logs",
  "keyType" : "AVRO",
  "valueType" : "AVRO",
  "retentionPolicy" : "delete",
  "keySchema" : "http://api.example.com/schemas/4edccfd6aa744e698542da36f1f01114",
  "valueSchema" : "http://api.example.com/schemas/8bc19be0c9cd4da296acd78e6022edf1",
  "integrity" : "http://api.example.com/integrities/247ab08159fe4da8be6905b55552ab52",
  "confidentiality" : "http://api.example.com/confidentialities/347ab08009fe4da8be6905b55552ab52",
  "owners" : "http://api.example.com/groups/2d8e99afd6e047f69c9595b4f2525fa6"
}

HTTP response

HTTP/1.1 201 Created
Location: http://api.example.com/streams/0e5ddda75de142569be0f83df6aa24fb

Retrieve a stream

The streams/{id} resource is used to retrieve, update and delete individual streams.

A GET request will retrieve the details of a Stream.

HTTP request

GET /streams/066f5944d16344f88c9214d240d139dc HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 2598
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "properties" : { },
  "name" : "rabo-stream1",
  "description" : null,
  "keyType" : "AVRO",
  "valueType" : "AVRO",
  "retentionPolicy" : "delete",
  "uid" : "066f5944d16344f88c9214d240d139dc",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : "strauthor@rabobank.nl",
  "modified_by" : "strauthor@rabobank.nl",
  "_embedded" : {
    "valueSchema" : {
      "name" : "nl.rabobank.beb.value-schema1",
      "description" : "",
      "uid" : "8bc19be0c9cd4da296acd78e6022edf1",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        }
      }
    },
    "keySchema" : {
      "name" : "nl.rabobank.beb.key-schema1",
      "description" : "",
      "uid" : "4edccfd6aa744e698542da36f1f01114",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        }
      }
    },
    "owners" : {
      "name" : "Stream-raboApplication1",
      "emailAddress" : null,
      "phoneNumber" : null,
      "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "members" : {
          "href" : "...",
          "templated" : true,
          "title" : "Users belonging to this group"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "stream" : {
      "href" : "...",
      "templated" : true,
      "title" : "A stream"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    },
    "keySchema" : {
      "href" : "...",
      "templated" : true,
      "title" : "The AVRO schema configured for key"
    },
    "integrity" : {
      "href" : "...",
      "templated" : true,
      "title" : "The integrity configured for the object"
    },
    "owners" : {
      "href" : "...",
      "templated" : true,
      "title" : "The group responsible for this object"
    },
    "confidentiality" : {
      "href" : "...",
      "templated" : true,
      "title" : "The confidentiality configured for the object"
    },
    "valueSchema" : {
      "href" : "...",
      "templated" : true,
      "title" : "The AVRO schema configured for value"
    }
  }
}
Relation Description

keySchema

Version of the Key schema definition

valueSchema

Version of the Value schema definition

owners

The group of users allowed to access/update the environment.

integrity

UID of the Integrity level definition

confidentiality

UID of the Confidentiality level definition

edit

Existence of this link indicates that the currently authenticated user can edit this Stream

delete

Existence of this link indicates that the currently authenticated user can delete this Stream

Update a stream

A PATCH request is used to update a stream. In the request, pass only the field that needs changing.

$ curl 'http://api.example.com/streams/066f5944d16344f88c9214d240d139dc' -i -X PATCH \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "retentionTime" : 2000
}'
PATCH /streams/066f5944d16344f88c9214d240d139dc HTTP/1.1
realm: rabo
Host: api.example.com
Content-Length: 28
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "retentionTime" : 2000
}
HTTP/1.1 204 No Content
ETag: "0"
Last-Modified: Thu, 7 Jun 2018 23:16:23 GMT

Stream search endpoints

/streams/search/findByName

Search for a stream by exact name.

Parameter Description

name

Stream name to search for.

GET /streams/search/findByName?name=rabo-stream1 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1713

{
  "_embedded" : {
    "streams" : [ {
      "name" : "rabo-stream1",
      "owners" : {
        "name" : "Stream-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "retentionPolicy" : "delete",
      "integrity" : null,
      "confidentiality" : null,
      "description" : null,
      "uid" : "066f5944d16344f88c9214d240d139dc",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "keySchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for key"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "valueSchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for value"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

/streams/search/findByNameContaining

Search for a stream by name containing search term.

Parameter Description

name

Term to search within stream name.

GET /streams/search/findByNameContaining?name=stream HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 7180
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "streams" : [ {
      "name" : "rabo-stream1",
      "owners" : {
        "name" : "Stream-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "retentionPolicy" : "delete",
      "integrity" : null,
      "confidentiality" : null,
      "description" : null,
      "uid" : "066f5944d16344f88c9214d240d139dc",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "keySchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for key"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "valueSchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for value"
        }
      }
    }, {
      "name" : "rabo-stream2",
      "owners" : {
        "name" : "Stream-raboApplication2",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "88eb98e0eff34fde923c15687e6d75d5",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "retentionPolicy" : "delete",
      "integrity" : {
        "level" : "L2",
        "description" : "This is level 2",
        "color" : "yellow",
        "uid" : "247ab03ffafe4da2bet905b5e352ab53",
        "created_at" : "2019-06-08T23:16:23.774",
        "modified_at" : "2019-06-08T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "confidentiality" : {
        "level" : "L2",
        "description" : "L2 confidentiality",
        "color" : "blue",
        "uid" : "648ab08009fe4da8be6905b55552ac43",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "a549f500d879419c9f5efa5d3cada7b3",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "keySchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for key"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "valueSchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for value"
        }
      }
    }, {
      "name" : "rabo-stream3",
      "owners" : {
        "name" : "Team Null",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "514d4e9a834841699644c2420b439553",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "retentionPolicy" : "delete",
      "integrity" : null,
      "confidentiality" : null,
      "description" : null,
      "uid" : "91105915be694c0d9dd2301ff54153f0",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "keySchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for key"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "valueSchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for value"
        }
      }
    }, {
      "name" : "rabo-stream4",
      "owners" : {
        "name" : "Team Null",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "514d4e9a834841699644c2420b439553",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "retentionPolicy" : "delete",
      "integrity" : null,
      "confidentiality" : null,
      "description" : null,
      "uid" : "31105915be694c0d9dd2301ff54153f0",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "keySchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for key"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "valueSchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for value"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "create" : {
      "href" : "...",
      "title" : "Indication that an entity can be created"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 4,
    "totalPages" : 1,
    "number" : 0
  }
}

Delete stream

Deleting stream is a two step process a GET request to check the constraints followed by the DELETE request

Delete stream constraints

A GET request is used to get the constraints for deleting Stream.

$ curl 'http://api.example.com/streams/066f5944d16344f88c9214d240d139dc/deletion-constraints' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
GET /streams/066f5944d16344f88c9214d240d139dc/deletion-constraints HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 80

{
  "canDelete" : false,
  "streamConfigsCount" : 3,
  "activeGrantsCount" : 3
}

Delete stream

A DELETE request is used to delete a Stream.

$ curl 'http://api.example.com/streams/31105915be694c0d9dd2301ff54153f0' -i -X DELETE \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN'
DELETE /streams/31105915be694c0d9dd2301ff54153f0 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN
HTTP/1.1 204 No Content

Browse stream

Browsing the content of a stream can include different search parameters.

A GET request is used to browse the content of a Stream.

The UID present in the request path needs to be a valid Stream Config uid and NOT a Stream uid !!!
$ curl 'http://api.example.com/streams/c082e097545948dcbd0cf993128d3fc2/browse?fromTime=1566803819&toTime=1566803820&query=text&page=0&pageSize=20' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
GET /streams/c082e097545948dcbd0cf993128d3fc2/browse?fromTime=1566803819&toTime=1566803820&query=text&page=0&pageSize=20 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 121
Content-Type: application/json;charset=UTF-8

{
  "messages" : [ ],
  "page" : {
    "size" : 20,
    "totalElements" : 0,
    "totalPages" : 0,
    "number" : 0
  }
}

Browse stream access

A GET request is used to determine if the user has the permissions to view the content of a stream.

The UID present in the request path needs to be a valid Stream Config uid and NOT a Stream uid !!!
$ curl 'http://api.example.com/streams/c082e097545948dcbd0cf993128d3fc2/browse-access' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
GET /streams/c082e097545948dcbd0cf993128d3fc2/browse-access HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK

Stream browse config

A GET request is used to obtain the information required to query messages on a specific cluster.

The UID present in the request path needs to be a valid Stream Config uid and NOT a Stream uid !!!
$ curl 'http://api.example.com/streams/c082e097545948dcbd0cf993128d3fc2/browse-config?selectedCluster=Boxtel' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
GET /streams/c082e097545948dcbd0cf993128d3fc2/browse-config?selectedCluster=Boxtel HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 2108

{
  "clusterDetails" : { },
  "tenant" : "rabo",
  "instance" : "ota",
  "instanceCAs" : [ "-----BEGIN CERTIFICATE-----\\nMIIFJjCCAw6gAwIBAgIJAINuAirfnRU6MA0GCSqGSIb3DQEBCwUAMCAxHjAcBgNV\\nBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODAeFw0xODA1MjkxMDM0MTRaFw0zODA1\\nMjQxMDM0MTRaMCAxHjAcBgNVBAMMFUF4dWFsIER1bW15IFJvb3QgMjAxODCCAiIw\\nDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVDjbhq3TGuQ6INTZ+dhSIgsdbq\\nw2nxF3myrS7v89bcNxMyLypWYTmR4OAYRXRBnW4KX6sTubPyL3ogPz6hXmfmPfAz\\n+X//HTIiybL3e3qwxqWphp09+JT6veEp/e/wEEjSMj5nsxkDEjj9JEQWu/1B+N+V\\nXOJkTYFy05ZgeWplkyLwT71myF047aISK27a+VebBMaPpvvetScbMSwxAbk51cGV\\nUC4gpwvnvsbp/CRuMV0dYzkeTmxgn860l3s8+7qUJoOrtiO0cDpv97SK9Ck9ef1k\\nR6KFttzxb/u+eMFi3RUErEGwE8P3thTseXRkp5hMwcyaSQv0wfLawlwcNFGOzsBx\\nfJS7QUIUpEyzRqj5Ppgaj530APxbgitLOfVLZ2DvcBcmnQns6OE+uwymuvAj8Ftj\\n6AFJXH2lmswHLl5uD9kIOwmpZg4NZLP2Qv+WOT6HLgI7Kv1z0OV2H7UlWA7hwQXl\\noQ6fJ2YLEhT+GM9xHKJ+DQCxvjWvtGUSb/Dk0j/R9mpSFfHvVJgE/xV+7F7Vlyw5\\n/cDpF3GZOTGQ/MFy4RqRrTtjnZw2/bZZyJ+Xb743OeQhABFUdadh8cmyehDregtr\\nalHxtjKxCxrT55OHCYhbCoz6nEnQURD7EPQhU5puUKalRq2ApDkveIk8uj0HQmQm\\nKyRuNX7M6vCoWnpxAgMBAAGjYzBhMB0GA1UdDgQWBBR0o48OpIVDoF+TQj9qwGQH\\nK3mCxTAfBgNVHSMEGDAWgBR0o48OpIVDoF+TQj9qwGQHK3mCxTAPBgNVHRMBAf8E\\nBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAbJanqR4P\\nmr05AyAu8vlrLsleXA8VAPDiaaYStYH5cIdBBWkaIxanLFDmbyQwKkKdkHQWV9X8\\n1P52q49T9RsoBsEOmwdiaCY2PEUz7Y3bFW0UeM+k65VlHlXWywRM6+O02t4TrJXH\\nF6h7vPon01OwhgW9Yil/Kr+yyZK50Ic+pm4UhHmtxY932cNaRCdae5tKsjabsP7Z\\nrdAksLia8mTp+HADkZJ1uODxyDh0S1WMKB5JoHYBrmtUr1NYLgRC6SinhK4r7rbi\\nEWuurE605Nm//jv3Czdy8gEsMDtXLZYY0iqGnD11MAJFXyQ6PG2eq1cXcsJNRojm\\n8D4ipfQ+z4bp9dDVR2DzVyTYe4yuhZuIe2phOhPc8KkBaXQRMHfVKyeEmzqEFLaM\\nkfaDZkRsrMZSqh+KJoxDG3h8UqssChX+cuZdsjRhNWRqfbB20I9Upwa+XooyCU4E\\nEkYyFTMchtvbYZEN/XvlPfhK5JB9eJ5rrcE8hKsP3gftchWWqCDedKugvZW/t5Vk\\nlc+z4IjiJFnRDfcr4Z5V2Hpseyno3AEK7aUdJlmuPnxoImFXfQ4jUguM/wznJHl7\\nXv9T0oaBVHM7Bd6PlES04Oho0KZXS6NryTsZn9GFV4qGZj5lEeOVl15AOfeIjP/I\\nokA2uUH/ZuJlR/BEmqbLt5HWPRNT/GgLfPY=\\n-----END CERTIFICATE-----\\n" ],
  "stream" : "rabo-stream1",
  "environment" : "raboenv1",
  "keyType" : "AVRO",
  "valueType" : "AVRO"
}

StreamConfigs

A StreamConfig is a unique set of configurations of a Stream for an Environment.

The /stream_configs resource is used to create and list StreamConfigs.

StreamConfig Schema

The /stream_configs resource uses the following json-schema:

GET /profile/stream_configs HTTP/1.1
Accept: application/schema+json
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 1629
Content-Type: application/schema+json;charset=UTF-8

{
  "title" : "Stream config",
  "properties" : {
    "partitions" : {
      "title" : "Partitions",
      "readOnly" : false,
      "type" : "integer"
    },
    "uid" : {
      "title" : "Uid",
      "readOnly" : true,
      "type" : "string"
    },
    "environment" : {
      "title" : "Environment",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "stream" : {
      "title" : "Stream",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "valueSchemaVersion" : {
      "title" : "Value schema version",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "keySchemaVersion" : {
      "title" : "Key schema version",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "modified_by" : {
      "title" : "Modified by",
      "readOnly" : false,
      "type" : "string"
    },
    "created_at" : {
      "title" : "Created at",
      "readOnly" : true,
      "type" : "string",
      "format" : "date-time"
    },
    "retentionTime" : {
      "title" : "Retention time",
      "readOnly" : false,
      "type" : "integer"
    },
    "modified_at" : {
      "title" : "Modified at",
      "readOnly" : false,
      "type" : "string",
      "format" : "date-time"
    },
    "created_by" : {
      "title" : "Created by",
      "readOnly" : true,
      "type" : "string"
    },
    "properties" : {
      "title" : "Properties",
      "readOnly" : false,
      "type" : "object"
    }
  },
  "definitions" : { },
  "type" : "object",
  "$schema" : "http://json-schema.org/draft-04/schema#"
}

List all stream configs

HTTP method GET is disabled for /stream_configs. Refer to search endpoints to find one or more StreamConfig for a Stream or an Environment or both.

Create stream config

A POST request is used to create a new StreamConfig. The request should include reference to a valid existing stream, key schema version and value schema version. The schema version should be of the same schema that is being used by the stream.

Request fields

Path Type Description Constraints

retentionTime

Number

The time in milliseconds after which the messages can be deleted from all streams. This is an optional field. If not specified, default value is 7 days (604800000).

Must be at least 1000. Must be at most 160704000000

partitions

Number

Defines the number of partitions configured for every stream of this tenant. This is an optional field. If not specified, default value is 12.

Must be at least 1. Must be at most 120000

stream

String

A valid URI of an existing stream.

Must not be null

keySchemaVersion

String

A valid URI of an existing schema version.

valueSchemaVersion

String

A valid URI of an existing schema version

properties

Object

A list of Kafka specific properties in Key,Value format.

Curl request

$ curl 'http://api.example.com/stream_configs' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "retentionTime" : 10000,
  "partitions" : 12,
  "stream" : "http://api.example.com/streams/a549f500d879419c9f5efa5d3cada7b3",
  "environment" : "http://api.example.com/environments/047ab08009fe4da8be6905b55552ab52",
  "keySchemaVersion" : "http://api.example.com/schema_versions/5162f72742cd4c6db07b9a71a825fe4f",
  "valueSchemaVersion" : "http://api.example.com/schema_versions/0aa818df699847d08c24f75a4a7399ed"
}'

HTTP request

POST /stream_configs HTTP/1.1
realm: rabo
Content-Length: 418
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "retentionTime" : 10000,
  "partitions" : 12,
  "stream" : "http://api.example.com/streams/a549f500d879419c9f5efa5d3cada7b3",
  "environment" : "http://api.example.com/environments/047ab08009fe4da8be6905b55552ab52",
  "keySchemaVersion" : "http://api.example.com/schema_versions/5162f72742cd4c6db07b9a71a825fe4f",
  "valueSchemaVersion" : "http://api.example.com/schema_versions/0aa818df699847d08c24f75a4a7399ed"
}

HTTP response

HTTP/1.1 201 Created
Location: http://api.example.com/stream_configs/5854ca73e15a42bba7b15ded63f5295b
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 4053
Last-Modified: Thu, 22 Apr 2021 14:34:23 GMT

{
  "properties" : {
    "segment.ms" : "172800000"
  },
  "retentionTime" : 10000,
  "partitions" : 12,
  "uid" : "5854ca73e15a42bba7b15ded63f5295b",
  "created_at" : "2021-04-22T14:34:23.012636",
  "modified_at" : "2021-04-22T14:34:23.012636",
  "created_by" : "poweruser@rabobank.nl",
  "modified_by" : "poweruser@rabobank.nl",
  "_embedded" : {
    "environment" : {
      "name" : "raboenv1",
      "shortName" : "raboenv1",
      "visibility" : "public",
      "color" : null,
      "description" : "environment",
      "uid" : "047ab08009fe4da8be6905b55552ab52",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    },
    "stream" : {
      "name" : "rabo-stream2",
      "owners" : {
        "name" : "Stream-raboApplication2",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "88eb98e0eff34fde923c15687e6d75d5",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "retentionPolicy" : "delete",
      "integrity" : {
        "level" : "L2",
        "description" : "This is level 2",
        "color" : "yellow",
        "uid" : "247ab03ffafe4da2bet905b5e352ab53",
        "created_at" : "2019-06-08T23:16:23.774",
        "modified_at" : "2019-06-08T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "confidentiality" : {
        "level" : "L2",
        "description" : "L2 confidentiality",
        "color" : "blue",
        "uid" : "648ab08009fe4da8be6905b55552ac43",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : "2018-06-07T23:16:23.774",
        "created_by" : null,
        "modified_by" : null
      },
      "description" : null,
      "uid" : "a549f500d879419c9f5efa5d3cada7b3",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "keySchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for key"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "valueSchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for value"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "streamConfig" : {
      "href" : "...",
      "title" : "A configuration of a stream"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    },
    "valueSchemaVersion" : {
      "href" : "...",
      "templated" : true,
      "title" : "A version of an AVRO schema configured for value"
    },
    "environment" : {
      "href" : "...",
      "templated" : true,
      "title" : "An environment"
    },
    "stream" : {
      "href" : "...",
      "templated" : true,
      "title" : "A stream"
    },
    "keySchemaVersion" : {
      "href" : "...",
      "templated" : true,
      "title" : "A version of an AVRO schema configured for key"
    }
  }
}

Retrieve a stream config

The stream_configs/{id} resource is used to retrieve, update and delete individual stream config.

A GET request will retrieve the details of a StreamConfig.

HTTP request

GET /stream_configs/c082e097545948dcbd0cf993128d3fc2 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 3353
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "properties" : { },
  "retentionTime" : 10000,
  "partitions" : 12,
  "uid" : "c082e097545948dcbd0cf993128d3fc2",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_embedded" : {
    "environment" : {
      "name" : "raboenv1",
      "shortName" : "raboenv1",
      "visibility" : "public",
      "color" : null,
      "description" : "environment",
      "uid" : "047ab08009fe4da8be6905b55552ab52",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "instance" : {
          "href" : "...",
          "templated" : true,
          "title" : "An instance"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        }
      }
    },
    "stream" : {
      "name" : "rabo-stream1",
      "owners" : {
        "name" : "Stream-raboApplication1",
        "emailAddress" : null,
        "phoneNumber" : null,
        "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
        "created_at" : "2018-06-07T23:16:23.774",
        "modified_at" : null,
        "created_by" : null,
        "modified_by" : null
      },
      "retentionPolicy" : "delete",
      "integrity" : null,
      "confidentiality" : null,
      "description" : null,
      "uid" : "066f5944d16344f88c9214d240d139dc",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        },
        "keySchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for key"
        },
        "integrity" : {
          "href" : "...",
          "templated" : true,
          "title" : "The integrity configured for the object"
        },
        "owners" : {
          "href" : "...",
          "templated" : true,
          "title" : "The group responsible for this object"
        },
        "confidentiality" : {
          "href" : "...",
          "templated" : true,
          "title" : "The confidentiality configured for the object"
        },
        "valueSchema" : {
          "href" : "...",
          "templated" : true,
          "title" : "The AVRO schema configured for value"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "streamConfig" : {
      "href" : "...",
      "title" : "A configuration of a stream"
    },
    "edit" : {
      "href" : "...",
      "title" : "Indication that this entity can be edited"
    },
    "delete" : {
      "href" : "...",
      "title" : "Indication that this entity can be deleted"
    },
    "valueSchemaVersion" : {
      "href" : "...",
      "templated" : true,
      "title" : "A version of an AVRO schema configured for value"
    },
    "environment" : {
      "href" : "...",
      "templated" : true,
      "title" : "An environment"
    },
    "stream" : {
      "href" : "...",
      "templated" : true,
      "title" : "A stream"
    },
    "keySchemaVersion" : {
      "href" : "...",
      "templated" : true,
      "title" : "A version of an AVRO schema configured for key"
    }
  }
}
Relation Description

edit

Existence of this link indicates that the currently authenticated user can edit this StreamConfig

delete

Existence of this link indicates that the currently authenticated user can delete this StreamConfig

Update a stream config

A PATCH request is used to update a stream config. In the request, pass only the field that needs changing.

$ curl 'http://api.example.com/stream_configs/c082e097545948dcbd0cf993128d3fc2' -i -X PATCH \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "retentionTime" : 40000
}'
PATCH /stream_configs/c082e097545948dcbd0cf993128d3fc2 HTTP/1.1
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Content-Length: 29
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "retentionTime" : 40000
}
HTTP/1.1 204 No Content
ETag: "0"
Last-Modified: Thu, 7 Jun 2018 23:16:23 GMT

Delete stream config endpoints

Deleting stream config is a two step process a GET request to check the constraints followed by the DELETE request

Delete stream config constraints

A GET request is used to get the constraints for deleting StreamConfig.

$ curl 'http://api.example.com/stream_configs/c082e097545948dcbd0cf993128d3fc2/deletion-constraints' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
GET /stream_configs/c082e097545948dcbd0cf993128d3fc2/deletion-constraints HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 51
Content-Type: application/json;charset=UTF-8

{
  "activeGrantsCount" : 0,
  "canDelete" : true
}

Delete stream config

A DELETE request is used to delete a stream config.

$ curl 'http://api.example.com/stream_configs/c082e097545948dcbd0cf993128d3fc2' -i -X DELETE \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN'
DELETE /stream_configs/c082e097545948dcbd0cf993128d3fc2 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN
HTTP/1.1 204 No Content

StreamConfig search endpoints

/stream_configs/search/findByStream

Returns all stream configs for given Stream.

Parameter Description

stream

A valid URI of an existing Stream

GET /stream_configs/search/findByStream?stream=http%3A%2F%2Flocalhost%2Fstreams%2F066f5944d16344f88c9214d240d139dc HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 11726

{
  "_embedded" : {
    "stream_configs" : [ {
      "properties" : { },
      "retentionTime" : 10000,
      "partitions" : 12,
      "uid" : "c082e097545948dcbd0cf993128d3fc2",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "environment" : {
          "name" : "raboenv1",
          "shortName" : "raboenv1",
          "visibility" : "public",
          "color" : null,
          "description" : "environment",
          "uid" : "047ab08009fe4da8be6905b55552ab52",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "instance" : {
              "href" : "...",
              "templated" : true,
              "title" : "An instance"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "stream" : {
          "name" : "rabo-stream1",
          "owners" : {
            "name" : "Stream-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "retentionPolicy" : "delete",
          "integrity" : null,
          "confidentiality" : null,
          "description" : null,
          "uid" : "066f5944d16344f88c9214d240d139dc",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "keySchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for key"
            },
            "integrity" : {
              "href" : "...",
              "templated" : true,
              "title" : "The integrity configured for the object"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            },
            "confidentiality" : {
              "href" : "...",
              "templated" : true,
              "title" : "The confidentiality configured for the object"
            },
            "valueSchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for value"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "streamConfig" : {
          "href" : "...",
          "title" : "A configuration of a stream"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "delete" : {
          "href" : "...",
          "title" : "Indication that this entity can be deleted"
        },
        "valueSchemaVersion" : {
          "href" : "...",
          "templated" : true,
          "title" : "A version of an AVRO schema configured for value"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "keySchemaVersion" : {
          "href" : "...",
          "templated" : true,
          "title" : "A version of an AVRO schema configured for key"
        }
      }
    }, {
      "properties" : { },
      "retentionTime" : 10000,
      "partitions" : 12,
      "uid" : "2f9ee6ce053c46b0932358c8503a2697",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "environment" : {
          "name" : "raboprivenv3",
          "shortName" : "raboprivenv3",
          "visibility" : "private",
          "color" : null,
          "description" : "environment",
          "uid" : "72c1b34b0c6744dcadb85f4c188518f6",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "instance" : {
              "href" : "...",
              "templated" : true,
              "title" : "An instance"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "stream" : {
          "name" : "rabo-stream1",
          "owners" : {
            "name" : "Stream-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "retentionPolicy" : "delete",
          "integrity" : null,
          "confidentiality" : null,
          "description" : null,
          "uid" : "066f5944d16344f88c9214d240d139dc",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "keySchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for key"
            },
            "integrity" : {
              "href" : "...",
              "templated" : true,
              "title" : "The integrity configured for the object"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            },
            "confidentiality" : {
              "href" : "...",
              "templated" : true,
              "title" : "The confidentiality configured for the object"
            },
            "valueSchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for value"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "streamConfig" : {
          "href" : "...",
          "title" : "A configuration of a stream"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "delete" : {
          "href" : "...",
          "title" : "Indication that this entity can be deleted"
        },
        "valueSchemaVersion" : {
          "href" : "...",
          "templated" : true,
          "title" : "A version of an AVRO schema configured for value"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "keySchemaVersion" : {
          "href" : "...",
          "templated" : true,
          "title" : "A version of an AVRO schema configured for key"
        }
      }
    }, {
      "properties" : { },
      "retentionTime" : 10000,
      "partitions" : 12,
      "uid" : "1e9ee6ce053c46b0932358c8503a2686",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "environment" : {
          "name" : "raboenv2",
          "shortName" : "raboenv2",
          "visibility" : "public",
          "color" : null,
          "description" : "environment",
          "uid" : "e11ee2dd976647109ca904dd8adc050f",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "instance" : {
              "href" : "...",
              "templated" : true,
              "title" : "An instance"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "stream" : {
          "name" : "rabo-stream1",
          "owners" : {
            "name" : "Stream-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "retentionPolicy" : "delete",
          "integrity" : null,
          "confidentiality" : null,
          "description" : null,
          "uid" : "066f5944d16344f88c9214d240d139dc",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "keySchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for key"
            },
            "integrity" : {
              "href" : "...",
              "templated" : true,
              "title" : "The integrity configured for the object"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            },
            "confidentiality" : {
              "href" : "...",
              "templated" : true,
              "title" : "The confidentiality configured for the object"
            },
            "valueSchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for value"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "streamConfig" : {
          "href" : "...",
          "title" : "A configuration of a stream"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "delete" : {
          "href" : "...",
          "title" : "Indication that this entity can be deleted"
        },
        "valueSchemaVersion" : {
          "href" : "...",
          "templated" : true,
          "title" : "A version of an AVRO schema configured for value"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "keySchemaVersion" : {
          "href" : "...",
          "templated" : true,
          "title" : "A version of an AVRO schema configured for key"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

/stream_configs/search/findByEnvironment

Returns configurations of all available streams for given Environment.

Parameter Description

environment

A valid URI of an existing Environment

GET /stream_configs/search/findByEnvironment?environment=http%3A%2F%2Flocalhost%2Fenvironments%2F46cfaf47d2d04d12923beefac3d0ba5a HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 165
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "stream_configs" : [ ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

/stream_configs/search/findByStreamAndEnvironment

Returns the configuration of the given Stream for given Environment.

Parameter Description

stream

A valid URI of an existing Stream

environment

A valid URI of an existing Environment

GET /stream_configs/search/findByStreamAndEnvironment?stream=http%3A%2F%2Flocalhost%2Fstreams%2F066f5944d16344f88c9214d240d139dc&environment=http%3A%2F%2Flocalhost%2Fenvironments%2F047ab08009fe4da8be6905b55552ab52 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 4098

{
  "_embedded" : {
    "stream_configs" : [ {
      "properties" : { },
      "retentionTime" : 10000,
      "partitions" : 12,
      "uid" : "c082e097545948dcbd0cf993128d3fc2",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "environment" : {
          "name" : "raboenv1",
          "shortName" : "raboenv1",
          "visibility" : "public",
          "color" : null,
          "description" : "environment",
          "uid" : "047ab08009fe4da8be6905b55552ab52",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "instance" : {
              "href" : "...",
              "templated" : true,
              "title" : "An instance"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            }
          }
        },
        "stream" : {
          "name" : "rabo-stream1",
          "owners" : {
            "name" : "Stream-raboApplication1",
            "emailAddress" : null,
            "phoneNumber" : null,
            "uid" : "2d8e99afd6e047f69c9595b4f2525fa6",
            "created_at" : "2018-06-07T23:16:23.774",
            "modified_at" : null,
            "created_by" : null,
            "modified_by" : null
          },
          "retentionPolicy" : "delete",
          "integrity" : null,
          "confidentiality" : null,
          "description" : null,
          "uid" : "066f5944d16344f88c9214d240d139dc",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            },
            "keySchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for key"
            },
            "integrity" : {
              "href" : "...",
              "templated" : true,
              "title" : "The integrity configured for the object"
            },
            "owners" : {
              "href" : "...",
              "templated" : true,
              "title" : "The group responsible for this object"
            },
            "confidentiality" : {
              "href" : "...",
              "templated" : true,
              "title" : "The confidentiality configured for the object"
            },
            "valueSchema" : {
              "href" : "...",
              "templated" : true,
              "title" : "The AVRO schema configured for value"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "streamConfig" : {
          "href" : "...",
          "title" : "A configuration of a stream"
        },
        "edit" : {
          "href" : "...",
          "title" : "Indication that this entity can be edited"
        },
        "delete" : {
          "href" : "...",
          "title" : "Indication that this entity can be deleted"
        },
        "valueSchemaVersion" : {
          "href" : "...",
          "templated" : true,
          "title" : "A version of an AVRO schema configured for value"
        },
        "environment" : {
          "href" : "...",
          "templated" : true,
          "title" : "An environment"
        },
        "stream" : {
          "href" : "...",
          "templated" : true,
          "title" : "A stream"
        },
        "keySchemaVersion" : {
          "href" : "...",
          "templated" : true,
          "title" : "A version of an AVRO schema configured for key"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "createStreamConfig" : {
      "href" : "...",
      "templated" : true
    }
  }
}

Schemas

A Schema is an AVRO definition formatted in JSON. Schemas are used by Streams of data type AVRO.

The schemas resource is used to create and list Schemas.

JSON Schema

The schemas resource uses the following json-schema:

GET /profile/schemas HTTP/1.1
Accept: application/schema+json
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 941
Content-Type: application/schema+json;charset=UTF-8

{
  "title" : "Schema",
  "properties" : {
    "uid" : {
      "title" : "Uid",
      "readOnly" : true,
      "type" : "string"
    },
    "name" : {
      "title" : "Name",
      "readOnly" : false,
      "type" : "string"
    },
    "modified_by" : {
      "title" : "Modified by",
      "readOnly" : false,
      "type" : "string"
    },
    "description" : {
      "title" : "Description",
      "readOnly" : false,
      "type" : "string"
    },
    "created_at" : {
      "title" : "Created at",
      "readOnly" : true,
      "type" : "string",
      "format" : "date-time"
    },
    "modified_at" : {
      "title" : "Modified at",
      "readOnly" : false,
      "type" : "string",
      "format" : "date-time"
    },
    "created_by" : {
      "title" : "Created by",
      "readOnly" : true,
      "type" : "string"
    }
  },
  "definitions" : { },
  "type" : "object",
  "$schema" : "http://json-schema.org/draft-04/schema#"
}

List all schemas

A GET request will list all the Schemas visible to the currently logged in user.

Curl request

$ curl 'http://api.example.com/schemas' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /schemas HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 2445

{
  "_embedded" : {
    "schemas" : [ {
      "name" : "nl.rabobank.beb.key-schema1",
      "description" : "",
      "uid" : "4edccfd6aa744e698542da36f1f01114",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "name" : "nl.rabobank.beb.value-schema1",
      "description" : "",
      "uid" : "8bc19be0c9cd4da296acd78e6022edf1",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "name" : "nl.rabobank.beb.key-schema2",
      "description" : "",
      "uid" : "a32ead9183734d838e32c8454af9f3f5",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "name" : "nl.rabobank.beb.value-schema2",
      "description" : "",
      "uid" : "dae551f956af48c1baa53281b5edca00",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "name" : "io.axual.qa.general.Random",
      "description" : "Demo schema",
      "uid" : "858d48056942069a916a8053e138s2e4",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 5,
    "totalPages" : 1,
    "number" : 0
  }
}

List all schema names only

Sometimes, fetching the schema names might be sufficient instead of fetching the complete object. For e.g. in displaying drop-down forms. To get schema names only, use the same GET call as above but add a parameter projection with value names.

Request parameters

Parameter Description

projection

There is only 1 valid value: names

Curl request

$ curl 'http://api.example.com/schemas?projection=names' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /schemas?projection=names HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 2304

{
  "_embedded" : {
    "schemas" : [ {
      "name" : "nl.rabobank.beb.key-schema1",
      "uid" : "4edccfd6aa744e698542da36f1f01114",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "name" : "nl.rabobank.beb.value-schema1",
      "uid" : "8bc19be0c9cd4da296acd78e6022edf1",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "name" : "nl.rabobank.beb.key-schema2",
      "uid" : "a32ead9183734d838e32c8454af9f3f5",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "name" : "nl.rabobank.beb.value-schema2",
      "uid" : "dae551f956af48c1baa53281b5edca00",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "name" : "io.axual.qa.general.Random",
      "uid" : "858d48056942069a916a8053e138s2e4",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 5,
    "totalPages" : 1,
    "number" : 0
  }
}

Create schema

A POST request is used to create a new schema. To create a new AVRO definition, refer to SchemaVersion.

Request fields

Path Type Description Constraints

name

String

A fully qualified Java classname of the Schema

Must match the regular expression (?i)^[a-z0-9\.\-_ ]+$. Must not be empty. Size must be between 3 and 255 inclusive

description

String

A short text describing the Schema

Size must be between 0 and 500 inclusive

Curl request

$ curl 'http://api.example.com/schemas' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "name" : "io.axual.aeb.test.Schema",
  "description" : "This is a test schema"
}'

HTTP request

POST /schemas HTTP/1.1
realm: rabo
Content-Length: 84
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "name" : "io.axual.aeb.test.Schema",
  "description" : "This is a test schema"
}

HTTP response

HTTP/1.1 201 Created
ETag: "0"
Last-Modified: Thu, 22 Apr 2021 14:34:20 GMT
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 522
Location: http://api.example.com/schemas/aaf707206abd4365bb84b6fe02c46e91

{
  "name" : "io.axual.aeb.test.Schema",
  "description" : "This is a test schema",
  "uid" : "aaf707206abd4365bb84b6fe02c46e91",
  "created_at" : "2021-04-22T14:34:20.757536",
  "modified_at" : "2021-04-22T14:34:20.757536",
  "created_by" : "poweruser@rabobank.nl",
  "modified_by" : "poweruser@rabobank.nl",
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "schema" : {
      "href" : "...",
      "templated" : true,
      "title" : "A schema"
    }
  }
}

Retrieve a schema

The schemas/{id} resource is used to retrieve, update and delete individual schemas.

A GET request will retrieve the details of a schema.

HTTP request

GET /schemas/4edccfd6aa744e698542da36f1f01114 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Length: 460
ETag: "0"
Content-Type: application/hal+json;charset=UTF-8
Last-Modified: Thu, 07 Jun 2018 23:16:23 GMT

{
  "name" : "nl.rabobank.beb.key-schema1",
  "description" : "",
  "uid" : "4edccfd6aa744e698542da36f1f01114",
  "created_at" : "2018-06-07T23:16:23.774",
  "modified_at" : "2018-06-07T23:16:23.774",
  "created_by" : null,
  "modified_by" : null,
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "schema" : {
      "href" : "...",
      "templated" : true,
      "title" : "A schema"
    }
  }
}

Update a schema

A PATCH request is used to update a schema. In the request, pass only the field that needs changing.

$ curl 'http://api.example.com/schemas/4edccfd6aa744e698542da36f1f01114' -i -X PATCH \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "description" : "Updated description."
}'
PATCH /schemas/4edccfd6aa744e698542da36f1f01114 HTTP/1.1
Content-Length: 44
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "description" : "Updated description."
}
HTTP/1.1 204 No Content
ETag: "0"
Last-Modified: Thu, 7 Jun 2018 23:16:23 GMT

Schema search endpoints

/schemas/search/findByName

Search for a schema by exact name.

Parameter Description

name

Schema name to search for.

GET /schemas/search/findByName?name=nl.rabobank.beb.key-schema1 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 642

{
  "_embedded" : {
    "schemas" : [ {
      "name" : "nl.rabobank.beb.key-schema1",
      "description" : "",
      "uid" : "4edccfd6aa744e698542da36f1f01114",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}

/schemas/search/findByNameContaining

Search for a schema by name containing search term.

Parameter Description

name

Term to search within schema name.

GET /schemas/search/findByNameContaining?name=rabobank HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 1804
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "schemas" : [ {
      "name" : "nl.rabobank.beb.key-schema1",
      "description" : "",
      "uid" : "4edccfd6aa744e698542da36f1f01114",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "name" : "nl.rabobank.beb.value-schema1",
      "description" : "",
      "uid" : "8bc19be0c9cd4da296acd78e6022edf1",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "name" : "nl.rabobank.beb.key-schema2",
      "description" : "",
      "uid" : "a32ead9183734d838e32c8454af9f3f5",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "name" : "nl.rabobank.beb.value-schema2",
      "description" : "",
      "uid" : "dae551f956af48c1baa53281b5edca00",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 4,
    "totalPages" : 1,
    "number" : 0
  }
}

Uploading a new schema for your tenant is a 2 steps process where first we verify if the schema is valid , non duplicate schema. Then upload the schema

Check a schema

A POST request is used to check a schema.

Curl request

$ curl 'http://api.example.com/schemas/check' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "schema" : "{\"type\":\"record\",\"name\":\"Random\",\"namespace\":\"io.axual.qa.general\",\"doc\":\"Object type that is supposed to be filled with a Random value. This should be used when the Key is irrelevant.\",\"fields\":[{\"name\":\"random\",\"type\":\"string\",\"doc\":\"The random value.\"}]}"
}'

HTTP request

POST /schemas/check HTTP/1.1
realm: rabo
Content-Length: 306
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "schema" : "{\"type\":\"record\",\"name\":\"Random\",\"namespace\":\"io.axual.qa.general\",\"doc\":\"Object type that is supposed to be filled with a Random value. This should be used when the Key is irrelevant.\",\"fields\":[{\"name\":\"random\",\"type\":\"string\",\"doc\":\"The random value.\"}]}"
}

HTTP response

HTTP/1.1 200 OK
Content-Length: 75
Content-Type: application/json;charset=UTF-8

{
  "versions" : [ "0.0.1" ],
  "fullName" : "io.axual.qa.general.Random"
}

Upload a schema

A POST request is used to upload a schema.

Curl request

$ curl 'http://api.example.com/schemas/upload' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "schema" : "{\"type\":\"record\",\"name\":\"Random\",\"namespace\":\"io.axual.qa.general\",\"doc\":\"Object type that is supposed to be filled with a Random value. This should be used when the Key is irrelevant.\",\"fields\":[{\"name\":\"random\",\"type\":\"string\",\"doc\":\"The random value.\"}]}",
  "version" : "2",
  "description" : "description"
}'

HTTP request

POST /schemas/upload HTTP/1.1
realm: rabo
Host: api.example.com
Content-Length: 358
Content-Type: application/json
Authorization: Bearer token
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "schema" : "{\"type\":\"record\",\"name\":\"Random\",\"namespace\":\"io.axual.qa.general\",\"doc\":\"Object type that is supposed to be filled with a Random value. This should be used when the Key is irrelevant.\",\"fields\":[{\"name\":\"random\",\"type\":\"string\",\"doc\":\"The random value.\"}]}",
  "version" : "2",
  "description" : "description"
}

HTTP response

HTTP/1.1 200 OK
Content-Length: 66
Content-Type: application/json;charset=UTF-8

{
  "version" : "2",
  "fullName" : "io.axual.qa.general.Random"
}

Schema Version

A Schema is an AVRO definition formatted in JSON. Schemas are used by Streams of data type AVRO.

The schemas resource is used to create and list Schemas.

JSON Schema

The schemas resource uses the following json-schema:

GET /profile/schema_versions HTTP/1.1
Accept: application/schema+json
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP/1.1 200 OK
Content-Length: 1078
Content-Type: application/schema+json;charset=UTF-8

{
  "title" : "Schema version",
  "properties" : {
    "schema" : {
      "title" : "Schema",
      "readOnly" : false,
      "type" : "string",
      "format" : "uri"
    },
    "uid" : {
      "title" : "Uid",
      "readOnly" : true,
      "type" : "string"
    },
    "schemaBody" : {
      "title" : "Schema body",
      "readOnly" : false,
      "type" : "string"
    },
    "modified_by" : {
      "title" : "Modified by",
      "readOnly" : false,
      "type" : "string"
    },
    "created_at" : {
      "title" : "Created at",
      "readOnly" : true,
      "type" : "string",
      "format" : "date-time"
    },
    "modified_at" : {
      "title" : "Modified at",
      "readOnly" : false,
      "type" : "string",
      "format" : "date-time"
    },
    "version" : {
      "title" : "Version",
      "readOnly" : false,
      "type" : "string"
    },
    "created_by" : {
      "title" : "Created by",
      "readOnly" : true,
      "type" : "string"
    }
  },
  "definitions" : { },
  "type" : "object",
  "$schema" : "http://json-schema.org/draft-04/schema#"
}

List all schema versions

A GET request will list all the schema versions visible to the currently logged in user.

Curl request

$ curl 'http://api.example.com/schema_versions' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /schema_versions HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Length: 7906
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "schema_versions" : [ {
      "version" : "v1",
      "schemaBody" : "schemaBody",
      "uid" : "b5c0a6b2fdd94d64925fd2fadb367891",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "schema" : {
          "name" : "nl.rabobank.beb.key-schema1",
          "description" : "",
          "uid" : "4edccfd6aa744e698542da36f1f01114",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "version" : "v1",
      "schemaBody" : "schemaBody1",
      "uid" : "c633a9d3badb4fa0861965246be64558",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "schema" : {
          "name" : "nl.rabobank.beb.value-schema1",
          "description" : "",
          "uid" : "8bc19be0c9cd4da296acd78e6022edf1",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "version" : "v1",
      "schemaBody" : "schemaBody",
      "uid" : "5162f72742cd4c6db07b9a71a825fe4f",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "schema" : {
          "name" : "nl.rabobank.beb.key-schema2",
          "description" : "",
          "uid" : "a32ead9183734d838e32c8454af9f3f5",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "version" : "v1",
      "schemaBody" : "schemaBody1",
      "uid" : "0aa818df699847d08c24f75a4a7399ed",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "schema" : {
          "name" : "nl.rabobank.beb.value-schema2",
          "description" : "",
          "uid" : "dae551f956af48c1baa53281b5edca00",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "version" : "v2",
      "schemaBody" : "schemaBody",
      "uid" : "b5c0a6b2fdd94d64925fd2fadb367f2d",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "schema" : {
          "name" : "nl.rabobank.beb.key-schema1",
          "description" : "",
          "uid" : "4edccfd6aa744e698542da36f1f01114",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "version" : "v2",
      "schemaBody" : "schemaBody1",
      "uid" : "c633a9d3badb4fa0861965246be645a2",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "schema" : {
          "name" : "nl.rabobank.beb.value-schema1",
          "description" : "",
          "uid" : "8bc19be0c9cd4da296acd78e6022edf1",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "version" : "0.0.1",
      "schemaBody" : "{\"type\":\"record\",\"name\":\"Random\",\"namespace\":\"io.axual.qa.general\",\"doc\":\"Object type that is supposed to be filled with a Random value. This should be used when the Key is irrelevant.\",\"fields\":[{\"name\":\"random\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"The random value.\"}]}",
      "uid" : "858d48056942069b916a8053e138s2f6",
      "created_at" : "2018-09-20T00:00:00",
      "modified_at" : "2018-09-20T00:00:00",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "schema" : {
          "name" : "io.axual.qa.general.Random",
          "description" : "Demo schema",
          "uid" : "858d48056942069a916a8053e138s2e4",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 7,
    "totalPages" : 1,
    "number" : 0
  }
}

List all schema versions only

Sometimes, fetching the schema versions might be sufficient instead of fetching the complete object. For e.g. in displaying drop-down forms. To get schema versions only, use the same GET call as above but add a parameter projection with value versions. Last modified date is also included to help determine the latest version.

Request parameters

Parameter Description

projection

Only 1 valid value: versions

Curl request

$ curl 'http://api.example.com/schema_versions?projection=versions' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /schema_versions?projection=versions HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Length: 3868
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "schema_versions" : [ {
      "version" : "v1",
      "uid" : "b5c0a6b2fdd94d64925fd2fadb367891",
      "modifiedAt" : "2018-06-07T23:16:23.774",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "version" : "v1",
      "uid" : "c633a9d3badb4fa0861965246be64558",
      "modifiedAt" : "2018-06-07T23:16:23.774",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "version" : "v1",
      "uid" : "5162f72742cd4c6db07b9a71a825fe4f",
      "modifiedAt" : "2018-06-07T23:16:23.774",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "version" : "v1",
      "uid" : "0aa818df699847d08c24f75a4a7399ed",
      "modifiedAt" : "2018-06-07T23:16:23.774",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "version" : "v2",
      "uid" : "b5c0a6b2fdd94d64925fd2fadb367f2d",
      "modifiedAt" : "2018-06-07T23:16:23.774",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "version" : "v2",
      "uid" : "c633a9d3badb4fa0861965246be645a2",
      "modifiedAt" : "2018-06-07T23:16:23.774",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "version" : "0.0.1",
      "uid" : "858d48056942069b916a8053e138s2f6",
      "modifiedAt" : "2018-09-20T00:00:00",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    },
    "search" : {
      "href" : "...",
      "title" : "Search endpoints for this entity"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 7,
    "totalPages" : 1,
    "number" : 0
  }
}

Schema Versions search endpoint

/schema_versions/search/findAllBySchema

Returns the schema versions of the given Schema.

Request parameters
Parameter Description

schema

A valid URI of an existing Schema

Curl request
$ curl 'http://api.example.com/schema_versions/search/findAllBySchema?schema=http%3A%2F%2Flocalhost%2Fschemas%2F4edccfd6aa744e698542da36f1f01114' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'
HTTP request
GET /schema_versions/search/findAllBySchema?schema=http%3A%2F%2Flocalhost%2Fschemas%2F4edccfd6aa744e698542da36f1f01114 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
HTTP response
HTTP/1.1 200 OK
Content-Length: 2183
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "schema_versions" : [ {
      "version" : "v1",
      "schemaBody" : "schemaBody",
      "uid" : "b5c0a6b2fdd94d64925fd2fadb367891",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "schema" : {
          "name" : "nl.rabobank.beb.key-schema1",
          "description" : "",
          "uid" : "4edccfd6aa744e698542da36f1f01114",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    }, {
      "version" : "v2",
      "schemaBody" : "schemaBody",
      "uid" : "b5c0a6b2fdd94d64925fd2fadb367f2d",
      "created_at" : "2018-06-07T23:16:23.774",
      "modified_at" : "2018-06-07T23:16:23.774",
      "created_by" : null,
      "modified_by" : null,
      "_embedded" : {
        "schema" : {
          "name" : "nl.rabobank.beb.key-schema1",
          "description" : "",
          "uid" : "4edccfd6aa744e698542da36f1f01114",
          "_links" : {
            "self" : {
              "href" : "...",
              "templated" : true,
              "title" : "URI pointing to current request"
            }
          }
        }
      },
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "schemaVersion" : {
          "href" : "...",
          "templated" : true
        },
        "schema" : {
          "href" : "...",
          "templated" : true,
          "title" : "A schema"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    }
  }
}

Create schema version

A POST request is used to create a new schema. To create a new AVRO definition, refer to SchemaVersion.

Request fields

Path Type Description Constraints

version

String

Version string for this schema

Must not be empty. Size must be between 0 and 50 inclusive

schemaBody

String

A JSON formatted string representing an AVRO schema.

schema

String

A valid URI for an existing schema.

Must not be null

Curl request

$ curl 'http://api.example.com/schema_versions' -i -X POST \
    -H 'realm: rabo' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json' \
    -H 'X-XSRF-TOKEN: XSRF-TOKEN' \
    --cookie 'XSRF-TOKEN=XSRF-TOKEN' \
    -d '{
  "version" : "test-v1",
  "schemaBody" : "{}",
  "schema" : "http://api.example.com/schemas/4edccfd6aa744e698542da36f1f01114"
}'

HTTP request

POST /schema_versions HTTP/1.1
Content-Length: 130
realm: rabo
Host: api.example.com
Content-Type: application/json
Authorization: Bearer token
Accept: application/hal+json
X-XSRF-TOKEN: XSRF-TOKEN
Cookie: XSRF-TOKEN=XSRF-TOKEN

{
  "version" : "test-v1",
  "schemaBody" : "{}",
  "schema" : "http://api.example.com/schemas/4edccfd6aa744e698542da36f1f01114"
}

HTTP response

HTTP/1.1 201 Created
Content-Length: 900
ETag: "0"
Last-Modified: Thu, 22 Apr 2021 14:34:20 GMT
Content-Type: application/hal+json;charset=UTF-8
Location: http://api.example.com/schema_versions/764673d87635460d9fc0ebda57ebf0a2

{
  "version" : "test-v1",
  "schemaBody" : "{}",
  "uid" : "764673d87635460d9fc0ebda57ebf0a2",
  "created_at" : "2021-04-22T14:34:20.618034",
  "modified_at" : "2021-04-22T14:34:20.618034",
  "created_by" : "poweruser@rabobank.nl",
  "modified_by" : "poweruser@rabobank.nl",
  "_embedded" : {
    "schema" : {
      "name" : "nl.rabobank.beb.key-schema1",
      "description" : "",
      "uid" : "4edccfd6aa744e698542da36f1f01114",
      "_links" : {
        "self" : {
          "href" : "...",
          "templated" : true,
          "title" : "URI pointing to current request"
        }
      }
    }
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "title" : "URI pointing to current request"
    },
    "schemaVersion" : {
      "href" : "...",
      "templated" : true
    },
    "schema" : {
      "href" : "...",
      "templated" : true,
      "title" : "A schema"
    }
  }
}

Support Tier

Support Tier can be assigned to instances and is used to determine the support plan chosen for the instance.

List all support tiers

A GET request will list all the support tiers.

Curl request

$ curl 'http://api.example.com/support_tiers' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /support_tiers HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Length: 1110
Content-Type: application/hal+json;charset=UTF-8

{
  "_embedded" : {
    "support_tiers" : [ {
      "name" : "GOLD",
      "description" : "This is gold",
      "uid" : "14cadc6238fc4695916a8053302743f5",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "supportTier" : {
          "href" : "...",
          "templated" : true
        }
      }
    }, {
      "name" : "SILVER",
      "description" : "This is silver",
      "uid" : "14cadc6238fc4695916a8053413843f5",
      "_links" : {
        "self" : {
          "href" : "...",
          "title" : "URI pointing to current request"
        },
        "supportTier" : {
          "href" : "...",
          "templated" : true
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "...",
      "templated" : true,
      "title" : "URI pointing to current request"
    },
    "profile" : {
      "href" : "...",
      "title" : "Endpoints for schema metadata in ALPS/JSON Schema format"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 0
  }
}

Auth

Management API acts as the Authorization service. All the requests passing through MGMT API are also authenticated against Keycloak or an OIDC provider.

The /auth base path for authentication / authorization endpoints.

Billing (Deprecated)

The billing resource uses the following json-schema:

Curl request

$ curl 'http://api.example.com/auth/billing' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'

HTTP request

GET /auth/billing HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token

HTTP response

HTTP/1.1 200 OK

Generic auth

The auth endpoint can be used by all services to check if a user has authority to perform a certain action.

Curl request

$ curl 'http://api.example.com/auth?action=STREAM_CONFIG_VIEW&resourceType=STREAM_CONFIG&resourceUid=c082e097545948dcbd0cf993128d3fc2' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token'

HTTP request

GET /auth?action=STREAM_CONFIG_VIEW&resourceType=STREAM_CONFIG&resourceUid=c082e097545948dcbd0cf993128d3fc2 HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token

HTTP response

HTTP/1.1 200 OK

Usage

The Usage stats of all the tenants can be accessed .

View Usage

A GET request which will return the usage stats for all the tenants across instances. Only BILLING_INTERNAL user has access to this endpoint.

Curl request

$ curl 'http://api.example.com/usage' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /usage HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Length: 515
Content-Type: application/hal+json;charset=UTF-8

[ {
  "name" : "rabo",
  "groups" : 9,
  "instance" : [ {
    "name" : "ota",
    "streamConfigsCount" : 4,
    "supportTier" : "GOLD"
  }, {
    "name" : "prod",
    "streamConfigsCount" : 0,
    "supportTier" : null
  }, {
    "name" : "lst",
    "streamConfigsCount" : 0,
    "supportTier" : null
  } ]
}, {
  "name" : "ing",
  "groups" : 4,
  "instance" : [ {
    "name" : "prod",
    "streamConfigsCount" : 1,
    "supportTier" : null
  } ]
}, {
  "name" : "supertenant",
  "groups" : 0,
  "instance" : [ ]
} ]

View Instance info

A GET request which will return the instance’s info for all the tenants. Only BILLING_INTERNAL user has access to this endpoint.

Curl request

$ curl 'http://api.example.com/usage/instances' -i -X GET \
    -H 'realm: rabo' \
    -H 'Authorization: Bearer token' \
    -H 'Accept: application/hal+json'

HTTP request

GET /usage/instances HTTP/1.1
realm: rabo
Host: api.example.com
Authorization: Bearer token
Accept: application/hal+json

HTTP response

HTTP/1.1 200 OK
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 624

[ {
  "instanceShortName" : "ota",
  "connectUrls" : "https://connect1.url,https://connect2.url",
  "connectEnabled" : true,
  "tenantShortName" : "rabo"
}, {
  "instanceShortName" : "prod",
  "connectUrls" : null,
  "connectEnabled" : false,
  "tenantShortName" : "rabo"
}, {
  "instanceShortName" : "lst",
  "connectUrls" : null,
  "connectEnabled" : false,
  "tenantShortName" : "rabo"
}, {
  "instanceShortName" : "prod",
  "connectUrls" : null,
  "connectEnabled" : false,
  "tenantShortName" : "ing"
}, {
  "instanceShortName" : "ota",
  "connectUrls" : null,
  "connectEnabled" : false,
  "tenantShortName" : null
} ]