API routes (Click a route to expand it, click here to expand/collapse all)
Default APIs
Provides the API-specification. Only enabled if API exposure is enabled.
| Parameter |
Location |
Type |
Requirements |
Optional |
Default value |
Description |
| format |
URI-Query |
string |
enum: [
"KateAPI",
"InternalAPIMap",
"OpenAPI",
"Swagger"
] |
Yes |
"KateAPI" |
Documentation format. We support KateAPI documentation, Swagger/OpenAPI documentation and raw output of the internal API-map cache. |
| openApiVersion |
URI-Query |
int |
enum: [
2,
3
] |
Yes |
2 |
Version 3 is crappy with request bodies, so we prefer version 2 (which only sucks regarding Response definitions; hence we prefer KateAPI documentation). |
| Response |
HTTP |
Type |
Description |
| Success |
200 |
object |
The API-documentation. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
POST/mgmt/cache/deleteAPIMap ⎘Authentication required
Clears the cached API-map. It will be reconstructed upon next API invocation.
| Response |
HTTP |
Type |
Description |
| Success |
200 |
bool |
true |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
Yes
Authentication scheme:
JWTAuth
Required flags:
kate:admin ⎘
POST/mgmt/cache/deleteCache ⎘Authentication required
Clears the entire cache. This includes for example all API-maps, but might also clear service-specific data.
| Response |
HTTP |
Type |
Description |
| Success |
200 |
bool |
true |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
Yes
Authentication scheme:
JWTAuth
Required flags:
kate:admin ⎘
Legacy APIs
Convert an adminPortalId to the customer+department, for migration and general use.
| Parameter |
Location |
Type |
Requirements |
Optional |
Default value |
Description |
| adminPortalId |
URI-Query |
string |
|
No |
|
v1 Admin Portal ID |
| Response |
HTTP |
Type |
Description |
| Success |
200 |
object |
idCustomer and idDepartment |
| CustomerNotConfiguredException |
500 |
|
No fully-configured customer mapping was found for the uuidCustomer identified by the legacy JWT-token. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
Returns the URL-base64-encoded JWT Public Key that can be used to verify the signature.
| Response |
HTTP |
Type |
Description |
| Success |
200 |
string |
URL-Base64-encoded public Verification Key for JWT verification. If Accept-header is NOT application/json, the publicKey is output in plain-text end the request is terminated. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
Returns the URL-base64-encoded JWT Public Key that can be used to verify the signature.
| Response |
HTTP |
Type |
Description |
| Success |
200 |
string |
URL-Base64-encoded public Verification Key for JWT verification. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
Returns the v1 Legacy Core URL.
| Parameter |
Location |
Type |
Requirements |
Optional |
Default value |
Description |
| idCustomer |
URI-Query |
string |
|
No |
|
v2 Customer ID |
| idDepartment |
URI-Query |
string |
|
No |
|
v2 Department ID |
| Response |
HTTP |
Type |
Description |
| Success |
200 |
string |
v1 Legacy Core URL or null if not found. |
| CustomerNotConfiguredException |
500 |
|
No fully-configured customer mapping was found for the uuidCustomer identified by the legacy JWT-token. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
Returns the v1 Legacy Admin-portal id (customerId not the id of the customer).
| Parameter |
Location |
Type |
Requirements |
Optional |
Default value |
Description |
| idCustomer |
URI-Query |
string |
|
No |
|
v2 Customer ID |
| idDepartment |
URI-Query |
string |
|
No |
|
v2 Department ID |
| Response |
HTTP |
Type |
Description |
| Success |
200 |
string |
v1 Legacy Core URL or null if not found. |
| CustomerNotConfiguredException |
500 |
|
No fully-configured customer mapping was found for the uuidCustomer identified by the legacy JWT-token. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
POST/kira/allocateTransfer ⎘Authentication required
Stores a KATEv1 Legacy JWT Token, and returns a link with a OneTimeToken, which can in a subsequent call be exchanged for the original KATEv1 Legacy JWT Token + KATEv2 Token.
| Response |
HTTP |
Type |
Description |
| Success |
200 |
string |
Link including OneTimeToken which can be used to exchange for KATEv1 JWT + KATEv2 JWT |
| CustomerNotConfiguredException |
500 |
|
No fully-configured customer mapping was found for the uuidCustomer identified by the legacy JWT-token. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
Yes
Authentication scheme:
JWTAuth
Required flags:
None ⎘
POST/kira/{oneTimeToken} ⎘
Exchanges a OneTimeToken for the original KATEv1 Legacy Token + a new KATEv2 Token.
| Parameter |
Location |
Type |
Requirements |
Optional |
Default value |
Description |
| oneTimeToken |
URI-Path |
string |
|
No |
|
OneTimeToken as included in the URL returned by the call to /kira/allocateTransfer |
| Response |
HTTP |
Type |
Description |
| Success |
200 |
object |
Object with 2 properties: access_token_v1 and access_token_v2. |
| InvalidOneTimeTokenException |
404 |
|
The allocated state for this one-time-token could not be found. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
POST/token ⎘Authentication required
Issues a KATEv2 JWT based on a KATEv1 Legacy JWT.
| Parameter |
Location |
Type |
Requirements |
Optional |
Default value |
Description |
| grant_type |
POST-body |
string |
enum: [
"legacy_token"
] |
Yes |
"legacy_token" |
Must be "legacy_token". |
| Response |
HTTP |
Type |
Description |
| Success |
200 |
string |
KATEv2 JWT |
| CustomerNotConfiguredException |
500 |
|
No fully-configured customer mapping was found for the uuidCustomer identified by the legacy JWT-token. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
Yes
Authentication scheme:
JWTAuth
Required flags:
None ⎘
Maintenance APIs
GET/monitor/{url}/kill-command ⎘
Returns a single command that could be executed in order to kill the longest running core-process in order to improve the stability by clean-up dead of workers.
| Parameter |
Location |
Type |
Requirements |
Optional |
Default value |
Description |
| url |
URI-Path |
string |
minLength: 4 pattern: ^[A-Za-z-0-9\.]*$ |
No |
|
URL to get list for. |
| timeThreshold |
URI-Query |
int |
|
Yes |
30000 |
Only return kill commands if active process runtime exceeds this value (milliseconds). |
| Response |
HTTP |
Type |
Description |
| Success |
200 |
string |
Kill command for the first process to kill, if applicable, otherwise empty string. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
GET/monitor/{url}/kill-list ⎘
Returns process-kill commands for given customer to clean-up dead workers.
| Parameter |
Location |
Type |
Requirements |
Optional |
Default value |
Description |
| url |
URI-Path |
string |
minLength: 4 pattern: ^[A-Za-z-0-9\.]*$ |
No |
|
URL to get list for. |
| timeThreshold |
URI-Query |
int |
|
Yes |
30000 |
Only return kill commands if active process runtime exceeds this value (milliseconds). |
| Response |
HTTP |
Type |
Description |
| Success |
200 |
string |
Kill commands. Will be directly output, without API response wrapper. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
Relocation APIs
Returns a list with all property relocation.
| Response |
HTTP |
Type |
Description |
| Success |
200 |
PropertyRelocation[] |
A list with all PropertyRelocations. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
Returns a property relocation by id.
| Parameter |
Location |
Type |
Requirements |
Optional |
Default value |
Description |
| id |
URI-Path |
int |
|
No |
|
ID of the existing property relocation entry. |
| Response |
HTTP |
Type |
Description |
| Success |
200 |
PropertyRelocation |
The PropertyRelocation. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
Creates a new property relocation entry.
| Parameter |
Location |
Type |
Requirements |
Optional |
Default value |
Description |
| type |
POST-body |
string |
|
No |
|
The redPoint type. |
| legacyLocation |
POST-body |
string |
|
No |
|
The legacy location, also known as propertyKey. |
| newLocation |
POST-body |
string |
|
No |
|
The new location, also known as redPath. |
| definitive |
POST-body |
bool |
|
Yes |
false |
Status of the property relocation, if true it means the new location is finalised. |
| definitiveOptions |
POST-body |
bool |
|
Yes |
false |
Status of the property relocation options, if true it means the new location is finalised for fixedTableColumns, valueSelectValues. |
| toDiscuss |
POST-body |
bool |
|
Yes |
false |
Set to true if this relocation needs to be discussed. |
| description |
POST-body |
string |
|
Yes |
null |
Update the description/notes of the property relocation, if provided null it will ignore it. |
| groups |
POST-body |
string |
format: json |
Yes |
null |
Json with objects of relocation groups. New groups do not require idPropertyRelocationGroup. Example: [{"mode":"create/update/delete", "id":idPropertyRelocationGroup, "serverName":"serverA","groups":"groupA | groupB","newLocation":"locationABC"},{"mode":"create/update/delete", "serverName":"serverB","groups":"groupC","newLocation":"locationABC"}] |
| translations |
POST-body |
string |
format: json |
Yes |
null |
Json with objects of TranslationRelocation. New translations dont not require idPropertyRelocation. Example: [{"mode":"create/update/delete", "id":idTranslationRelocation, "namespace":"red.point.location.label", "language":"en", "translation": "value"}] |
| options |
POST-body |
string |
format: json |
Yes |
null |
Json with objects of ValueSelectValueRelocation or FixedTableColumnRelocation. New options dont not require id. Example: {"fixedTableColumns":[{"id":"idFixedTableColumn","mode":"create/update/delete","legacyLocation":"location","newLocation":"value"}],"valueSelectValues":[{"id":"idValueSelectValue","mode":"create/update/delete","legacyLocation":"location","newLocation":"value"}]} |
| Response |
HTTP |
Type |
Description |
| Success |
200 |
PropertyRelocation |
The newly created PropertyRelocation. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
Deletes a property relocation entry.
| Parameter |
Location |
Type |
Requirements |
Optional |
Default value |
Description |
| id |
POST-body |
int |
|
No |
|
ID of the existing property relocation entry. |
| Response |
HTTP |
Type |
Description |
| Success |
200 |
bool |
Returns true if the operation was successful, else false. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
Updates the property relocation entry.
| Parameter |
Location |
Type |
Requirements |
Optional |
Default value |
Description |
| id |
POST-body |
int |
|
No |
|
ID of the existing property relocation entry. |
| type |
POST-body |
string |
|
Yes |
null |
The redPoint type. |
| groups |
POST-body |
string |
format: json |
Yes |
null |
Json with objects of relocation groups. New groups do not require idPropertyRelocationGroup. Example: [{"mode":"create/update/delete", "id":idPropertyRelocationGroup, "serverName":"serverA","groups":"groupA | groupB","newLocation":"locationABC"},{"serverName":"serverB","groups":"groupC","newLocation":"locationABC"}] |
| translations |
POST-body |
string |
format: json |
Yes |
null |
Json with objects of TranslationRelocation. New translations do not require idPropertyRelocation. Example: [{"mode":"create/update/delete", "id":idTranslationRelocation, "namespace":"red.point.location.label", "language":"en", "translation": "value"}] |
| options |
POST-body |
string |
format: json |
Yes |
null |
Json with objects of ValueSelectValueRelocation or FixedTableColumnRelocation. New options dont not require id. Example: {"fixedTableColumns":[{"id":"idFixedTableColumn","mode":"create/update/delete","legacyLocation":"location","newLocation":"value"}],"valueSelectValues":[{"id":"idValueSelectValue","mode":"create/update/delete","legacyLocation":"location","newLocation":"value"}]} |
| definitive |
POST-body |
bool |
|
Yes |
null |
Status of the property relocation, if true it means the new location is finalised. |
| definitiveOptions |
POST-body |
bool |
|
Yes |
null |
Status of the property relocation options, if true it means the new location is finalised for fixedTableColumns, valueSelectValues. |
| toDiscuss |
POST-body |
bool |
|
Yes |
null |
Set to true if this relocation needs to be discussed. |
| description |
POST-body |
string |
|
Yes |
null |
Update the description/notes of the property relocation, if provided null it will ignore it. |
| Response |
HTTP |
Type |
Description |
| Success |
200 |
PropertyRelocation |
The updated PropertyRelocation. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
Relocations page APIs
Outputs html page with the server property relocations for v1-v2 migration.
| Parameter |
Location |
Type |
Requirements |
Optional |
Default value |
Description |
| search |
URI-Query |
string |
|
Yes |
null |
The search string to filter, if null it means all relocations are fetched. |
| isDefinitive |
URI-Query |
bool |
|
Yes |
null |
Bool to filter on the status definitive of the relocation, if null then filter is ignored. |
| toDiscuss |
URI-Query |
bool |
|
Yes |
null |
Bool to filter on the column toDiscuss of the relocation, if null then filter is ignored. |
| searchOnNewLocation |
URI-Query |
bool |
|
Yes |
false |
Bool to search the new location instead of the legacy location. |
| Response |
HTTP |
Type |
Description |
| Success |
200 |
string |
String html page with a table including all the the server migration relocations. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
Outputs html page to create a new relocation entry.
| Response |
HTTP |
Type |
Description |
| Success |
200 |
string |
String html page to create a new property relocation. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
GET/relocations/information ⎘
Outputs html page with the server relocations information and description for v1-v2 migration.
| Response |
HTTP |
Type |
Description |
| Success |
200 |
string |
String html page with the information about the migration. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
GET/relocations/update/{id} ⎘
Outputs html page to edit a property relocation.
| Parameter |
Location |
Type |
Requirements |
Optional |
Default value |
Description |
| id |
URI-Path |
int |
|
No |
|
id of the existing Relocation entry |
| Response |
HTTP |
Type |
Description |
| Success |
200 |
string |
String html page to edit an existing property relocation. |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
Request Report
encrypt
| Response |
HTTP |
Type |
Description |
| Success |
200 |
array |
the encrypted thingy |
| MissingRequiredParameterException |
400 |
|
The request is missing a required input parameter. See details for involved parameter. |
| InvalidParameterException |
400 |
|
The request has an invalid argument. See details for involved parameter and invalidation. |
| AuthenticationFailedException |
401 |
|
Authentication failed. Re-authenticate and retry. See error details for details. |
| UnauthorizedException |
403 |
|
Authorization for requested method rejected. See error details for details. |
Authentication required:
No
Authentication schemes (Click an authentication scheme to expand it)
JWTAuth
| description |
Bearer JWT token in Authorization header. |
| realm |
kate.v1-legacy |
| supportedIssuers |
[
"https:\/\/kateinnovations.com"
] |
| verificationKeyIdentifier |
[
"customer-id"
] |
| flagsIdentifier |
permissions |
| detailsIdentifiers |
{
"uuidUser": "sub",
"username": "username",
"uuidCustomer": "customer-id"
} |
Result wrappers (Click a result-wrapper to expand it)
Success
{
result: < mixed, success result, type specified in API route documentation >,
error: null,
messages: {
"type": "error|warning|success|info|debug",
"namespace": string,
"namedArguments": < optional object that has information referenced in the translation linked to the namespace>
}[],
apiVersion: < string, current serving API version in format ^[0-9]+\.[0-9]+\.[0-9]+(\-[A-Za-z0-9]+)?$ >
}
Error
{
result: null,
error: {
code: < string, response error code as described in API route documentation. Use this code in language translation files. >,
description: < string, optional, technical description of error. Only intended for developers for debug, not suitable for end-users >,
details: < object|array|string, contains detailed data about error, if applicable >
},
messages: {
"type": "error|warning|success|info|debug",
"namespace": string,
"namedArguments": < optional object that has information referenced in the translation linked to the namespace>
}[],
apiVersion: < string, current serving API version in format ^[0-9]+\.[0-9]+\.[0-9]+(\-[A-Za-z0-9]+)?$ >
}