Definitions for @turbot/turbot-iam

accessKey

{
"description": "An Access Key including the secret access key.",
"type": "object",
"properties": {
"title": {
"$ref": "turbot#/definitions/title"
},
"accessKey": {
"$ref": "#/definitions/accessKeyId"
},
"secretKey": {
"$ref": "#/definitions/secretKey"
},
"status": {
"$ref": "#/definitions/status"
},
"turbot": {
"$ref": "turbot#/definitions/resourceMetadata"
}
},
"additionalProperties": false,
"required": [
"title",
"accessKey",
"secretKey",
"status"
],
"tests": [
{
"description": "Valid",
"input": {
"accessKey": "397eea31-598a-45a4-9f95-3b8a02bde026",
"title": "397eea31-598a-45a4-9f95-3b8a02bde026",
"secretKey": "f3b01a61-2030-483e-9f71-0084feb15b3e",
"status": "Active"
}
},
{
"description": "Invalid - missing accessKey",
"input": {
"title": "397eea31-598a-45a4-9f95-3b8a02bde026",
"secretKey": "f3b01a61-2030-483e-9f71-0084feb15b3e",
"status": "Active"
},
"expected": false
},
{
"description": "Invalid - missing secretKey",
"input": {
"title": "397eea31-598a-45a4-9f95-3b8a02bde026",
"accessKey": "397eea31-598a-45a4-9f95-3b8a02bde026",
"status": "Active"
},
"expected": false
},
{
"description": "Invalid - missing status",
"input": {
"title": "397eea31-598a-45a4-9f95-3b8a02bde026",
"accessKey": "397eea31-598a-45a4-9f95-3b8a02bde026",
"secretKey": "f3b01a61-2030-483e-9f71-0084feb15b3e"
},
"expected": false
},
{
"description": "Invalid - missing title",
"input": {
"accessKey": "397eea31-598a-45a4-9f95-3b8a02bde026",
"secretKey": "f3b01a61-2030-483e-9f71-0084feb15b3e",
"status": "Active"
},
"expected": false
},
{
"description": "Invalid - unknown property",
"input": {
"accessKey": "397eea31-598a-45a4-9f95-3b8a02bde026",
"secretKey": "f3b01a61-2030-483e-9f71-0084feb15b3e",
"status": "Active",
"random": "value"
},
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/accessKey",
"modUri": "tmod:@turbot/turbot-iam"
}
}

accessKeyId

{
"description": "Access key for a Turbot access key pair.",
"$ref": "#/definitions/uuidv4",
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/accessKeyId",
"modUri": "tmod:@turbot/turbot-iam"
}
}

alphanumericId

{
"type": "string",
"pattern": "^(?:[a-z][a-z0-9]?|[a-z][a-z0-9-_.]{0,62}[a-z0-9])$",
"minLength": 1,
"maxLength": 64,
"tests": [
{
"description": "Valid string",
"input": "an-id"
},
{
"description": "Invalid string with special character",
"input": "not-v@lid",
"expected": false
},
{
"description": "Invalid string with space inside",
"input": "not valid",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/alphanumericId",
"modUri": "tmod:@turbot/turbot-iam"
}
}

certificate

{
"type": "string",
"maxLength": 2097152,
"minLength": 1,
"pattern": "(-{5}BEGIN CERTIFICATE-{5})?([A-Za-z0-9/\n/+=/]*)(-{5}END CERTIFICATE-{5})?",
"tests": [
{
"description": "base case with begin/end and line breaks",
"input": "-----BEGIN CERTIFICATE-----\nMIIDoDCCAoigAwIBAgIGAV2Tqqa1MA0GCSqGSIb3DQEBCwUAMIGQMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxETAPBgNVBAMMCHR1cmJvdGhxMRwwGgYJKoZIhvcNAQkBFg1p\nbmZvQG9rdGEuY29tMB4XDTE3MDczMDEzMjI0MFoXDTI3MDczMDEzMjM0MFowgZAxCzAJBgNVBAYT\nAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMQ0wCwYDVQQK\nDARPa3RhMRQwEgYDVQQLDAtTU09Qcm92aWRlcjERMA8GA1UEAwwIdHVyYm90aHExHDAaBgkqhkiG\n9w0BCQEWDWluZm9Ab2t0YS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYHhIn\nVUFP4NRWlqwplgSo7esXlXKiedkTf8+N6AXBah1xIiMubCRXBuDgtjz1ZwDpGa/XY8YtKZGABY+S\nP772WXNMaYc2RNdxSbz54W4TFx/we5LiGPCGmMKtSZHFBBGwGHvSul/NWEJ1TU8nJ1hdh2UBgjf2\nPm6XZAayTkCx15CL/+NfLSgNnHQlcNL+z7xVK2kyqFV1tOmy846A2NtqlluXkrJp0scHC5ryq/cR\n16KnbnOE9tq/I2Z30cHsqqC0kKHfJTBdbOhJcXH1oKObUOcKc1tFhLjUC4J/grZ8e2MVKljtug2j\nSnLlbTbrdG+pPqdCFNkSdfBaQWpZnp1jAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAIUJBfEt/Job\nKQljFqegHcJK1MWR0UbdTfVC4jDjX5yItG2igmwIvq0DaHWahrTPwdP3u2yDMyBZTfwwqzgHMg1s\n/OPCOddw+8m0E7n8p37PHtrzS7qlXHjJTC+Ihg/6QOhhHKmXnUN3ic2L4RdaCuIOBHS0qo8H3Mhj\nnSqAXYKBajn2MDQYOTZMPTc4PqQNtL6cCa4RNUk3G+chlhiCzQ/Nb6hKCCHEuhCoIc6htnIcoWmj\n7WWR2Piy5GKSibZ4GQgcLgdu7jTrkbYr56DPzDUEEWa3jCcl/xqyAjWdsX9NCBf4o3nSIdwCAMJZ\nSMbqN5lCzivATVQPxuAPS9fHbSI=\n-----END CERTIFICATE-----"
},
{
"description": "base case with no begin/end and no line breaks",
"input": "MIIDoDCCAoigAwIBAgIGAV2Tqqa1MA0GCSqGSIb3DQEBCwUAMIGQMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxETAPBgNVBAMMCHR1cmJvdGhxMRwwGgYJKoZIhvcNAQkBFg1pbmZvQG9rdGEuY29tMB4XDTE3MDczMDEzMjI0MFoXDTI3MDczMDEzMjM0MFowgZAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMQ0wCwYDVQQKDARPa3RhMRQwEgYDVQQLDAtTU09Qcm92aWRlcjERMA8GA1UEAwwIdHVyYm90aHExHDAaBgkqhkiG9w0BCQEWDWluZm9Ab2t0YS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYHhInVUFP4NRWlqwplgSo7esXlXKiedkTf8+N6AXBah1xIiMubCRXBuDgtjz1ZwDpGa/XY8YtKZGABY+SP772WXNMaYc2RNdxSbz54W4TFx/we5LiGPCGmMKtSZHFBBGwGHvSul/NWEJ1TU8nJ1hdh2UBgjf2Pm6XZAayTkCx15CL/+NfLSgNnHQlcNL+z7xVK2kyqFV1tOmy846A2NtqlluXkrJp0scHC5ryq/cR16KnbnOE9tq/I2Z30cHsqqC0kKHfJTBdbOhJcXH1oKObUOcKc1tFhLjUC4J/grZ8e2MVKljtug2jSnLlbTbrdG+pPqdCFNkSdfBaQWpZnp1jAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAIUJBfEt/JobKQljFqegHcJK1MWR0UbdTfVC4jDjX5yItG2igmwIvq0DaHWahrTPwdP3u2yDMyBZTfwwqzgHMg1s/OPCOddw+8m0E7n8p37PHtrzS7qlXHjJTC+Ihg/6QOhhHKmXnUN3ic2L4RdaCuIOBHS0qo8H3MhjnSqAXYKBajn2MDQYOTZMPTc4PqQNtL6cCa4RNUk3G+chlhiCzQ/Nb6hKCCHEuhCoIc6htnIcoWmj7WWR2Piy5GKSibZ4GQgcLgdu7jTrkbYr56DPzDUEEWa3jCcl/xqyAjWdsX9NCBf4o3nSIdwCAMJZSMbqN5lCzivATVQPxuAPS9fHbSI="
},
{
"description": "invalid - incorrect data type inserted",
"input": [
1234567890
],
"expected": false
},
{
"description": "invalid - empty string provided",
"input": "",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/certificate",
"modUri": "tmod:@turbot/turbot-iam"
}
}

directoryEntryPoint

{
"description": "Defines the identity provider single sign-on (entry point) URL.",
"type": "string",
"format": "uri",
"tests": [
{
"description": "Valid directory entry point",
"input": "https://example.com/myapp/sso/saml"
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/directoryEntryPoint",
"modUri": "tmod:@turbot/turbot-iam"
}
}

directoryIssuer

{
"description": "Defines the issuer for the SAML identity provider.",
"type": "string",
"format": "uri",
"tests": [
{
"description": "Valid directory issuer",
"input": "https://example.com/myapp/sso/saml"
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/directoryIssuer",
"modUri": "tmod:@turbot/turbot-iam"
}
}

directorySignatureAlgorithm

{
"description": "Defines the type of algorithm",
"type": "string",
"enum": [
"SHA-1",
"SHA-256",
"SHA-512"
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/directorySignatureAlgorithm",
"modUri": "tmod:@turbot/turbot-iam"
}
}

directoryStatus

{
"description": "Defines the different statuses for a Directory that can be used with Turbot.",
"oneOf": [
{
"type": "string",
"enum": [
"new",
"inactive",
"active",
"New",
"Inactive",
"Active"
],
"tests": [
{
"description": "Valid directory status (new)",
"input": "new"
},
{
"description": "Valid directory status (inactive)",
"input": "inactive"
},
{
"description": "Valid directory status (active)",
"input": "active"
},
{
"description": "Valid directory status (New)",
"input": "New"
},
{
"description": "Valid directory status (Inactive)",
"input": "Inactive"
},
{
"description": "Valid directory status (Active)",
"input": "Active"
},
{
"description": "Invalid directory status (Unknown)",
"input": "Unknown",
"expected": false
}
]
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/directoryStatus",
"modUri": "tmod:@turbot/turbot-iam"
}
}

displayName

{
"type": "string",
"minLength": 1,
"maxLength": 256,
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/displayName",
"modUri": "tmod:@turbot/turbot-iam"
}
}

email

{
"description": "Email address",
"type": "string",
"format": "email",
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/email",
"modUri": "tmod:@turbot/turbot-iam"
}
}

googleDirectory

{
"description": "Information about a Google directory.",
"type": "object",
"properties": {
"title": {
"$ref": "turbot#/definitions/title"
},
"description": {
"$ref": "turbot#/definitions/description"
},
"directoryType": {
"const": "google"
},
"status": {
"$ref": "#/definitions/directoryStatus"
},
"profileIdTemplate": {
"$ref": "#/definitions/profileIdTemplate"
},
"groupProfileIdTemplate": {
"$ref": "#/definitions/groupProfileIdTemplate"
},
"clientID": {
"$ref": "#/definitions/oAuthClientID"
},
"clientSecret": {
"$ref": "#/definitions/oAuthClientSecret"
},
"hostedDomain": {
"$ref": "#/definitions/hostname"
}
},
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/googleDirectory",
"modUri": "tmod:@turbot/turbot-iam"
}
}

groupProfile

{
"description": "Profile for a group in a directory.",
"type": "object",
"properties": {
"title": {
"$ref": "turbot#/definitions/title"
},
"status": {
"$ref": "#/definitions/status"
},
"profileId": {
"$ref": "turbot#/definitions/trimmedString"
},
"displayName": {
"$ref": "#/definitions/displayName"
}
},
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/groupProfile",
"modUri": "tmod:@turbot/turbot-iam"
}
}

groupProfileIdTemplate

{
"description": "Template to calculate the ID for a group profile based on a directory group.",
"$ref": "turbot#/definitions/trimmedString",
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/groupProfileIdTemplate",
"modUri": "tmod:@turbot/turbot-iam"
}
}

hostname

{
"description": "A <a href=\"https://en.wikipedia.org/wiki/Hostname\">DNS hostname</a>.",
"example": "turbot.acme.com",
"type": "string",
"format": "hostname",
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/hostname",
"modUri": "tmod:@turbot/turbot-iam"
}
}

iam

{
"allOf": [
{
"$ref": "turbot#/definitions/service"
},
{
"type": "object",
"properties": {
"title": {
"const": "IAM"
}
}
}
],
"tests": [
{
"description": "IAM",
"input": {
"title": "IAM"
}
},
{
"description": "invalid - service provider name prefixed",
"input": {
"title": "Turbot IAM"
},
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/iam",
"modUri": "tmod:@turbot/turbot-iam"
}
}

identity

{
"description": "Identity",
"type": "object",
"required": [
"turbot"
],
"properties": {
"turbot": {
"$ref": "#/definitions/identityMetadata"
}
},
"tests": [
{
"description": "Valid identity",
"input": {
"turbot": {
"title": "Turbot",
"picture": "http://url.to/turbot.png"
}
}
},
{
"description": "Invalid identity (missing turbot)",
"input": {
"foo": "bar"
},
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/identity",
"modUri": "tmod:@turbot/turbot-iam"
}
}

identityMetadata

{
"description": "Identity metadata.",
"type": "object",
"required": [
"title",
"picture"
],
"properties": {
"title": {
"$ref": "turbot#/definitions/trimmedString"
},
"picture": {
"$ref": "#/definitions/picture"
}
},
"tests": [
{
"description": "Valid identity metadata",
"input": {
"title": "Turbot",
"picture": "http://url.to/turbot.png"
}
},
{
"description": "Invalid identity metadata (missing title)",
"input": {
"picture": "http://url.to/turbot.png"
},
"expected": false
},
{
"description": "Invalid identity metadata (missing picture)",
"input": {
"title": "Turbot"
},
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/identityMetadata",
"modUri": "tmod:@turbot/turbot-iam"
}
}

ldapDirectory

{
"description": "Information about a local directory.",
"type": "object",
"properties": {
"directoryType": {
"const": "ldap"
},
"title": {
"$ref": "turbot#/definitions/title"
},
"description": {
"$ref": "turbot#/definitions/description"
},
"status": {
"$ref": "#/definitions/directoryStatus"
},
"profileIdTemplate": {
"$ref": "#/definitions/profileIdTemplate"
},
"groupProfileIdTemplate": {
"$ref": "#/definitions/groupProfileIdTemplate"
},
"url": {
"$ref": "turbot#/definitions/trimmedString"
},
"distinguishedName": {
"$ref": "turbot#/definitions/trimmedString"
},
"password": {
"$ref": "#/definitions/ldapPassword"
},
"tlsEnabled": {
"type": "boolean"
},
"tlsClientCertificateAuthenticationEnabled": {
"type": "boolean"
},
"tlsClientCertificate": {
"$ref": "#/definitions/certificate"
},
"tlsClientPrivateKey": {
"$ref": "#/definitions/tlsClientPrivateKey"
},
"tlsServerCertificate": {
"$ref": "#/definitions/certificate"
},
"base": {
"$ref": "turbot#/definitions/trimmedString"
},
"userObjectFilter": {
"$ref": "#/definitions/ldapFilter"
},
"disabledUserFilter": {
"$ref": "turbot#/definitions/trimmedString"
},
"userMatchFilter": {
"$ref": "#/definitions/ldapFilter"
},
"userSearchFilter": {
"$ref": "#/definitions/ldapFilter"
},
"userSearchAttributes": {
"type": "array",
"items": {
"type": "string"
}
},
"groupObjectFilter": {
"$ref": "#/definitions/ldapFilter"
},
"groupSearchFilter": {
"$ref": "#/definitions/ldapFilter"
},
"groupSyncFilter": {
"$ref": "#/definitions/ldapFilter"
},
"userCanonicalNameAttribute": {
"$ref": "turbot#/definitions/trimmedString"
},
"userEmailAttribute": {
"$ref": "turbot#/definitions/trimmedString"
},
"userDisplayNameAttribute": {
"$ref": "turbot#/definitions/trimmedString"
},
"userGivenNameAttribute": {
"$ref": "turbot#/definitions/trimmedString"
},
"userFamilyNameAttribute": {
"$ref": "turbot#/definitions/trimmedString"
},
"groupCanonicalNameAttribute": {
"$ref": "turbot#/definitions/trimmedString"
},
"groupMemberOfAttribute": {
"$ref": "turbot#/definitions/trimmedString"
},
"groupMembershipAttribute": {
"$ref": "turbot#/definitions/trimmedString"
},
"connectivityTestFilter": {
"$ref": "#/definitions/ldapFilter"
},
"rejectUnauthorized": {
"type": "boolean"
},
"disabledGroupFilter": {
"$ref": "#/definitions/ldapFilter"
}
},
"tests": [
{
"description": "Valid LDAP Directory",
"input": {
"directoryType": "ldap",
"title": "A Valid Directory",
"status": "active",
"profileIdTemplate": "{{profile.$source.mail}}",
"groupProfileIdTemplate": "{{group.$source.cn}}",
"url": "ldap://1.2.3.4",
"distinguishedName": "admin",
"password": "@dmin",
"base": "DC=ad-us-east-2,DC=ad,DC=turbot,DC=com"
}
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/ldapDirectory",
"modUri": "tmod:@turbot/turbot-iam"
}
}

ldapFilter

{
"type": "string",
"pattern": "^(.*)$",
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/ldapFilter",
"modUri": "tmod:@turbot/turbot-iam"
}
}

ldapPassword

{
"allOf": [
{
"$ref": "turbot#/definitions/trimmedString"
},
{
"x-turbot": {
"secret": true
}
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/ldapPassword",
"modUri": "tmod:@turbot/turbot-iam"
}
}

localDirectory

{
"description": "Information about a local directory.",
"type": "object",
"properties": {
"title": {
"$ref": "turbot#/definitions/title"
},
"directoryType": {
"const": "local"
},
"status": {
"$ref": "#/definitions/directoryStatus"
},
"profileIdTemplate": {
"$ref": "#/definitions/profileIdTemplate"
},
"groupProfileIdTemplate": {
"$ref": "#/definitions/groupProfileIdTemplate"
},
"turbot": {
"$ref": "turbot#/definitions/resourceMetadata"
},
"description": {
"$ref": "turbot#/definitions/description"
}
},
"tests": [
{
"description": "Valid Local Directory",
"input": {
"title": "A Valid Directory",
"directoryType": "local",
"status": "Active",
"profileIdTemplate": "{{profile.email}}",
"groupProfileIdTemplate": "{{group.name}}"
}
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/localDirectory",
"modUri": "tmod:@turbot/turbot-iam"
}
}

localDirectoryGroup

{
"description": "Information about the Group in the Turbot Directory.",
"type": "object",
"properties": {
"title": {
"$ref": "turbot#/definitions/title"
},
"name": {
"$ref": "#/definitions/displayName"
},
"description": {
"$ref": "turbot#/definitions/description"
},
"status": {
"$ref": "#/definitions/status"
},
"turbot": {
"$ref": "turbot#/definitions/resourceMetadata"
}
},
"tests": [
{
"description": "Valid Turbot Directory Group - minimal",
"input": {
"name": "Admins",
"status": "Active",
"title": "Admins"
}
},
{
"description": "Valid Turbot Directory User - full",
"input": {
"name": "Admins",
"status": "Active",
"description": "The group to represent Admins in Turbot",
"title": "Admins"
}
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/localDirectoryGroup",
"modUri": "tmod:@turbot/turbot-iam"
}
}

localDirectoryUser

{
"description": "Information about a local directory user.",
"type": "object",
"properties": {
"title": {
"$ref": "turbot#/definitions/title"
},
"id": {
"$ref": "#/definitions/uuidv4"
},
"email": {
"$ref": "#/definitions/email"
},
"status": {
"$ref": "#/definitions/status"
},
"displayName": {
"$ref": "#/definitions/displayName"
},
"givenName": {
"$ref": "#/definitions/displayName"
},
"middleName": {
"$ref": "#/definitions/displayName"
},
"familyName": {
"$ref": "#/definitions/displayName"
},
"picture": {
"$ref": "#/definitions/picture"
},
"password": {
"$ref": "#/definitions/password"
},
"passwordTimestamp": {
"$ref": "turbot#/definitions/isoTimestamp"
},
"turbot": {
"$ref": "turbot#/definitions/resourceMetadata"
}
},
"tests": [
{
"description": "Valid Local Directory User - minimal",
"input": {
"id": "c97093ae-f387-4dfc-bb47-bba172b6cb41",
"email": "someone@somewhere.com",
"password": "C0mpl3x1!",
"status": "Active",
"displayName": "Joe Bloggs",
"title": "Joe Bloggs"
}
},
{
"description": "Valid Local Directory User - full",
"input": {
"id": "c97093ae-f387-4dfc-bb47-bba172b6cb41",
"email": "someone@somewhere.com",
"password": "C0mpl3x1!",
"status": "Active",
"displayName": "Joe Bloggs",
"givenName": "Joe",
"middleName": "Edward",
"familyName": "Bloggs",
"picture": "https://some.picture.repository.com/WZsdolEQl2s/photo.jpg?sz=50",
"title": "Joe Bloggs"
}
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/localDirectoryUser",
"modUri": "tmod:@turbot/turbot-iam"
}
}

nameIdFormat

{
"description": "Defines the name identifier format to request from the identity provider.",
"type": "string",
"enum": [
"email",
"unspecified"
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/nameIdFormat",
"modUri": "tmod:@turbot/turbot-iam"
}
}

oAuthClientID

{
"description": "Client ID setting for an OAuth provider.",
"example": "125358849129-njb0arc67o2t3o604ouikdvsgssnu3rf.apps.googleusercontent.com",
"$ref": "#/definitions/hostname",
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/oAuthClientID",
"modUri": "tmod:@turbot/turbot-iam"
}
}

oAuthClientSecret

{
"description": "Client Secret setting for an OAuth provider.",
"example": "fb-tbevaACsBKQHthzba-PH9",
"type": "string",
"pattern": "^[-_a-zA-Z0-9]+$",
"minLength": 1,
"maxLength": 64,
"x-turbot": {
"secret": true
},
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/oAuthClientSecret",
"modUri": "tmod:@turbot/turbot-iam"
}
}

password

{
"description": "A secret password, usually highly complex and hidden from view.",
"example": "ASf94nadf7ydbcidAOSDFbida",
"type": "string",
"minLength": 1,
"maxLength": 256,
"x-turbot": {
"secret": true
},
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/password",
"modUri": "tmod:@turbot/turbot-iam"
}
}

picture

{
"type": "string",
"format": "uri",
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/picture",
"modUri": "tmod:@turbot/turbot-iam"
}
}

profile

{
"description": "Profile for a user in a directory.",
"type": "object",
"properties": {
"title": {
"$ref": "turbot#/definitions/title"
},
"externalId": {
"type": "string"
},
"profileId": {
"$ref": "turbot#/definitions/trimmedString"
},
"lastLoginTimestamp": {
"$ref": "turbot#/definitions/isoTimestamp"
},
"status": {
"$ref": "#/definitions/status"
},
"email": {
"$ref": "#/definitions/email"
},
"displayName": {
"$ref": "#/definitions/displayName"
},
"givenName": {
"$ref": "#/definitions/displayName"
},
"middleName": {
"$ref": "#/definitions/displayName"
},
"familyName": {
"$ref": "#/definitions/displayName"
},
"picture": {
"$ref": "#/definitions/picture"
},
"turbot": {
"$ref": "turbot#/definitions/resourceMetadata"
}
},
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/profile",
"modUri": "tmod:@turbot/turbot-iam"
}
}

profileIdTemplate

{
"description": "Template to calculate the ID for a profile based on a directory user.",
"$ref": "turbot#/definitions/trimmedString",
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/profileIdTemplate",
"modUri": "tmod:@turbot/turbot-iam"
}
}

rightDefinition

{
"description": "Internal format for Turbot Rights registrations.",
"type": "object",
"properties": {
"level": {
"type": "string",
"format": "uri-reference",
".turbot": {
"uri": "tmod:@turbot/turbot#/definitions/$ref",
"modUri": "tmod:@turbot/turbot"
},
"pattern": "#/permission/levels/"
},
"type": {
"type": "string",
"format": "uri-reference",
".turbot": {
"uri": "tmod:@turbot/turbot#/definitions/$ref",
"modUri": "tmod:@turbot/turbot"
},
"pattern": "#/permission/types/"
},
"metadata": {
"type": "object",
"properties": {
"roleName": {
"type": "string"
}
}
}
},
"required": [
"level",
"type"
],
"additionalProperties": false,
"tests": [
{
"description": "Valid right definition",
"input": {
"level": "@turbot/turbot-iam#/permission/levels/admin",
"type": "#/permission/types/bar"
}
},
{
"description": "Invalid - Levels includes a non #/permission/levels/* path",
"expected": false,
"input": {
"level": "#/definitions/foo",
"type": "#/permission/types/foo"
}
},
{
"description": "Invalid - Types includes a non #/permission/types/* path",
"expected": false,
"input": {
"level": "#/permission/levels/user",
"type": "#/definitions/bar"
}
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/rightDefinition",
"modUri": "tmod:@turbot/turbot-iam"
}
}

rightDefinitionList

{
"description": "Internal format for Turbot Rights registrations.",
"type": "array",
"items": {
"description": "Internal format for Turbot Rights registrations.",
"type": "object",
"properties": {
"level": {
"type": "string",
"format": "uri-reference",
".turbot": {
"uri": "tmod:@turbot/turbot#/definitions/$ref",
"modUri": "tmod:@turbot/turbot"
},
"pattern": "#/permission/levels/"
},
"type": {
"type": "string",
"format": "uri-reference",
".turbot": {
"uri": "tmod:@turbot/turbot#/definitions/$ref",
"modUri": "tmod:@turbot/turbot"
},
"pattern": "#/permission/types/"
},
"metadata": {
"type": "object",
"properties": {
"roleName": {
"type": "string"
}
}
}
},
"required": [
"level",
"type"
],
"additionalProperties": false,
"tests": [
{
"description": "Valid right definition",
"input": {
"level": "@turbot/turbot-iam#/permission/levels/admin",
"type": "#/permission/types/bar"
}
},
{
"description": "Invalid - Levels includes a non #/permission/levels/* path",
"expected": false,
"input": {
"level": "#/definitions/foo",
"type": "#/permission/types/foo"
}
},
{
"description": "Invalid - Types includes a non #/permission/types/* path",
"expected": false,
"input": {
"level": "#/permission/levels/user",
"type": "#/definitions/bar"
}
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/rightDefinition",
"modUri": "tmod:@turbot/turbot-iam"
}
},
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/rightDefinitionList",
"modUri": "tmod:@turbot/turbot-iam"
}
}

samlDirectory

{
"description": "Information about a SAML directory.",
"type": "object",
"properties": {
"description": {
"$ref": "turbot#/definitions/description"
},
"directoryType": {
"const": "saml"
},
"status": {
"$ref": "#/definitions/directoryStatus"
},
"entryPoint": {
"$ref": "#/definitions/directoryEntryPoint"
},
"issuer": {
"$ref": "#/definitions/directoryIssuer"
},
"certificate": {
"$ref": "#/definitions/certificate"
},
"profileIdTemplate": {
"$ref": "#/definitions/profileIdTemplate"
},
"groupProfileIdTemplate": {
"$ref": "#/definitions/groupProfileIdTemplate"
},
"nameIdFormat": {
"$ref": "#/definitions/nameIdFormat"
},
"signRequests": {
"$ref": "#/definitions/signRequests"
},
"signaturePrivateKey": {
"$ref": "#/definitions/signaturePrivateKey"
},
"signatureAlgorithm": {
"$ref": "#/definitions/directorySignatureAlgorithm"
},
"allowIdpInitiatedSSO": {
"type": "boolean"
},
"requiredSignedAuthenticationResponse": {
"type": "boolean"
},
"requiredSignedAssertionResponse": {
"type": "boolean"
},
"strictAudienceValidation": {
"type": "boolean"
},
"allowGroupSyncing": {
"type": "boolean"
},
"profileGroupsAttribute": {
"type": "string"
},
"groupFilter": {
"type": "string"
}
},
"tests": [
{
"description": "Valid SAML Directory",
"input": {
"title": "A Valid SAML Directory",
"description": "A Valid SAML Directory for testing.",
"status": "New",
"directoryType": "saml",
"entryPoint": "https://example.com/myapp/sso/saml",
"issuer": "https://example.com/myapp/sso/saml",
"allowIdpInitiatedSSO": false,
"requiredSignedAuthenticationResponse": false,
"requiredSignedAssertionResponse": false,
"strictAudienceValidation": false,
"profileIdTemplate": "{{profile.email}}",
"groupProfileIdTemplate": "{{group.name}}",
"certificate": "-----BEGIN CERTIFICATE-----\nMIIDoDCCAoigAwIBAgIGAV2Tqqa1MA0GCSqGSIb3DQEBCwUAMIGQMQswCQYDVQQGEwJVUzETMBEG\nA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU\nMBIGA1UECwwLU1NPUHJvdmlkZXIxETAPBgNVBAMMCHR1cmJvdGhxMRwwGgYJKoZIhvcNAQkBFg1p\nbmZvQG9rdGEuY29tMB4XDTE3MDczMDEzMjI0MFoXDTI3MDczMDEzMjM0MFowgZAxCzAJBgNVBAYT\nAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMQ0wCwYDVQQK\nDARPa3RhMRQwEgYDVQQLDAtTU09Qcm92aWRlcjERMA8GA1UEAwwIdHVyYm90aHExHDAaBgkqhkiG\n9w0BCQEWDWluZm9Ab2t0YS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYHhIn\nVUFP4NRWlqwplgSo7esXlXKiedkTf8+N6AXBah1xIiMubCRXBuDgtjz1ZwDpGa/XY8YtKZGABY+S\nP772WXNMaYc2RNdxSbz54W4TFx/we5LiGPCGmMKtSZHFBBGwGHvSul/NWEJ1TU8nJ1hdh2UBgjf2\nPm6XZAayTkCx15CL/+NfLSgNnHQlcNL+z7xVK2kyqFV1tOmy846A2NtqlluXkrJp0scHC5ryq/cR\n16KnbnOE9tq/I2Z30cHsqqC0kKHfJTBdbOhJcXH1oKObUOcKc1tFhLjUC4J/grZ8e2MVKljtug2j\nSnLlbTbrdG+pPqdCFNkSdfBaQWpZnp1jAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAIUJBfEt/Job\nKQljFqegHcJK1MWR0UbdTfVC4jDjX5yItG2igmwIvq0DaHWahrTPwdP3u2yDMyBZTfwwqzgHMg1s\n/OPCOddw+8m0E7n8p37PHtrzS7qlXHjJTC+Ihg/6QOhhHKmXnUN3ic2L4RdaCuIOBHS0qo8H3Mhj\nnSqAXYKBajn2MDQYOTZMPTc4PqQNtL6cCa4RNUk3G+chlhiCzQ/Nb6hKCCHEuhCoIc6htnIcoWmj\n7WWR2Piy5GKSibZ4GQgcLgdu7jTrkbYr56DPzDUEEWa3jCcl/xqyAjWdsX9NCBf4o3nSIdwCAMJZ\nSMbqN5lCzivATVQPxuAPS9fHbSI=\n-----END CERTIFICATE-----",
"signaturePrivateKey": "-----BEGIN CERTIFICATE-----\nMIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6\nb24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd\nBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN\nMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD\nVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z\nb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt\nYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ\n21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T\nrDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE\nIbb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4\nnUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb\nFFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb\nNYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6\nb24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd\nBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN\nMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD\nVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z\nb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt\nYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ\n21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T\nrDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE\nIbb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4\nnUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb\nFFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb\nNYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=\n-----END CERTIFICATE-----"
}
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/samlDirectory",
"modUri": "tmod:@turbot/turbot-iam"
}
}

secretKey

{
"allOf": [
{
"$ref": "#/definitions/uuidv4"
},
{
"description": "Secret key for a Turbot access key pair.",
"x-turbot": {
"secret": true
}
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/secretKey",
"modUri": "tmod:@turbot/turbot-iam"
}
}

signaturePrivateKey

{
"type": "string",
"maxLength": 2097152,
"minLength": 1,
"pattern": "(-{5}BEGIN (RSA )?PRIVATE KEY-{5})?([A-Za-z0-9/\n/+=/]*)(-{5}END (RSA )?PRIVATE KEY-{5})?",
"x-turbot": {
"secret": true
},
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/signaturePrivateKey",
"modUri": "tmod:@turbot/turbot-iam"
}
}

signRequests

{
"type": "boolean",
"tests": [
{
"input": false
},
{
"input": true
},
{
"description": "invalid - array",
"input": [],
"expected": false
},
{
"description": "invalid - string",
"input": "",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/signRequests",
"modUri": "tmod:@turbot/turbot-iam"
}
}

sshKey

{
"description": "An SSH Key, not including the private key.",
"example": {
"fingerprint": "78:cf:8e:1a:be:6d:65:5c:19:04:88:a6:d1:c9:8a:3f",
"publicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmAO/njb8ZG5zEPgEpB39DHtwBfwMyGuh/+Ihjv8ww60c2zE+skbMsMNIwBiOG7WCQun4qEckY57ki6lYM0HFTc3FYseT5XFCMUugwj5HK5g7SjFXan+6mFKjv0HOF7HeZREz18cTCDAhkwyTFwyM3vK76FNDoPSfq6OL6fSgVJroL6OHnyrqfYJzpkOFiTRjw3VkqZDEId8kBAoTi8NCUxK33Nc/olcf58tVr2m94uwOt8EwhKFpf1+hSzgHDRxqODS6WsoE+cGIVNPBb2E7jZJF/LIH/SNyuK7yeivTEIT0J2+eFwQHQd5IMShuW2tDaHv9mecPzSWt6NUJCGcFd joe@example.com",
"$signaturePrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEAReallyComplexLongStringShortenedHere\nAReallyComplexLongStringShortenedHere===\n-----END RSA PRIVATE KEY-----",
"createTimestamp": "2017-01-10T18:50:30.364Z",
"status": "Active"
},
"properties": {
"title": {
"$ref": "turbot#/definitions/title"
},
"fingerprint": {
"$ref": "#/definitions/sshKeyFingerprint"
},
"publicKey": {
"$ref": "#/definitions/sshPublicKey"
},
"status": {
"$ref": "#/definitions/status"
},
"turbot": {
"$ref": "turbot#/definitions/resourceMetadata"
}
},
"required": [
"title",
"publicKey",
"fingerprint",
"status"
],
"additionalProperties": false,
"tests": [
{
"description": "Valid",
"input": {
"title": "68:df:b2:22:d8:43:5d:36:75:c1:d8:59:c0:8c:22:e8",
"publicKey": "ssh-rsa AAAAB3NzaC1yc2EAReallyComplexLongStringShortenedHere/dDlDJtqc comment_here",
"fingerprint": "68:df:b2:22:d8:43:5d:36:75:c1:d8:59:c0:8c:22:e8",
"status": "Active"
}
},
{
"description": "Valid - Without AWS Fingerprint",
"input": {
"title": "SSH Key (2e:45:5f:72)",
"publicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDM9+sNUriTVCJfoNochPGQvzNy95BdeBa4x0n6jWii4LY2qIPUTwblkzTJ+qqwm1Wqrl5WHvzI6kdbbcS+MgYBaWmw248IS/oPNSjlMPwpO1MA1zxwpRMj+HUqyqz7J3PN4txo4mYJGKjzzYB1MgEwdMYiLFJPmicPx57AdNyja/+kg7we7CCSPrrCVSkfpHd0OKAo/VN1ESIWJCpRsXMqrVlDJr4lAfXohmDflXjfDKlY0dXD9PDosGQcXkqsBv6FU326eAN9IY8i+X5qhY8L6i77Jnmcj6GUtlUWsa7ZShHNHzVL9DtiNd/pk3N+xUT5PhbDxj0NZSiCzAGiI+er aaa@jf.turbot.local",
"fingerprint": "2e:45:5f:72:fc:30:e9:22:d6:c5:76:a9:1a:69:93:f0",
"status": "Active"
}
},
{
"description": "Invalid - Missing title",
"input": {
"publicKey": "ssh-rsa AAAAB3NzaC1yc2EAReallyComplexLongStringShortenedHere/dDlDJtqc comment_here",
"fingerprint": "68:df:b2:22:d8:43:5d:36:75:c1:d8:59:c0:8c:22:e8",
"status": "Active"
},
"expected": false
},
{
"description": "Invalid - Missing public key",
"input": {
"title": "68:df:b2:22:d8:43:5d:36:75:c1:d8:59:c0:8c:22:e8",
"fingerprint": "68:df:b2:22:d8:43:5d:36:75:c1:d8:59:c0:8c:22:e8",
"status": "Active"
},
"expected": false
},
{
"description": "Invalid - Missing fingerprint",
"input": {
"title": "68:df:b2:22:d8:43:5d:36:75:c1:d8:59:c0:8c:22:e8",
"publicKey": "ssh-rsa AAAAB3NzaC1yc2EAReallyComplexLongStringShortenedHere/dDlDJtqc comment_here",
"status": "Active"
},
"expected": false
},
{
"description": "Invalid - Missing status",
"input": {
"title": "68:df:b2:22:d8:43:5d:36:75:c1:d8:59:c0:8c:22:e8",
"publicKey": "ssh-rsa AAAAB3NzaC1yc2EAReallyComplexLongStringShortenedHere/dDlDJtqc comment_here",
"fingerprint": "68:df:b2:22:d8:43:5d:36:75:c1:d8:59:c0:8c:22:e8"
},
"expected": false
},
{
"description": "Invalid - Unknown property",
"input": {
"title": "68:df:b2:22:d8:43:5d:36:75:c1:d8:59:c0:8c:22:e8",
"publicKey": "ssh-rsa AAAAB3NzaC1yc2EAReallyComplexLongStringShortenedHere/dDlDJtqc comment_here",
"fingerprint": "68:df:b2:22:d8:43:5d:36:75:c1:d8:59:c0:8c:22:e8",
"status": "Active",
"foo": "bar"
},
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/sshKey",
"modUri": "tmod:@turbot/turbot-iam"
}
}

sshKeyFingerprint

{
"description": "An SSH key fingerprint string.",
"example": "68:df:b2:22:d8:43:5d:36:75:c1:d8:59:c0:8c:22:e8",
"type": "string",
"pattern": "^[a-f0-9]{2}(:[a-f0-9]{2}){15}$",
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/sshKeyFingerprint",
"modUri": "tmod:@turbot/turbot-iam"
}
}

sshPublicKey

{
"description": "An SSH public key string.",
"example": "ssh-rsa AAAAB3NzaC1yc2EAReallyComplexLongStringShortenedHere/dDlDJtqc comment_here",
"type": "string",
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/sshPublicKey",
"modUri": "tmod:@turbot/turbot-iam"
}
}

status

{
"description": "Defines the different statuses for IAM resources in Turbot.",
"type": "string",
"enum": [
"Active",
"Inactive"
],
"tests": [
{
"description": "Valid status (Active)",
"input": "Active"
},
{
"description": "Valid status (Inactive)",
"input": "Inactive"
},
{
"description": "Invalid status (SomeUnknownStatus)",
"input": "SomeUnknownStatus",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/status",
"modUri": "tmod:@turbot/turbot-iam"
}
}

tlsClientPrivateKey

{
"type": "string",
"maxLength": 2097152,
"minLength": 1,
"pattern": "(-{5}BEGIN (RSA )?PRIVATE KEY-{5})?([A-Za-z0-9/\n/+=/]*)(-{5}END (RSA )?PRIVATE KEY-{5})?",
"x-turbot": {
"secret": true
},
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/tlsClientPrivateKey",
"modUri": "tmod:@turbot/turbot-iam"
}
}

turbotDirectory

{
"description": "Information about a Turbot directory.",
"type": "object",
"properties": {
"title": {
"$ref": "turbot#/definitions/title"
},
"description": {
"$ref": "turbot#/definitions/description"
},
"directoryType": {
"const": "turbot"
},
"status": {
"$ref": "#/definitions/directoryStatus"
},
"profileIdTemplate": {
"$ref": "#/definitions/profileIdTemplate"
},
"server": {
"$ref": "#/definitions/turbotDirectoryServer"
}
},
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/turbotDirectory",
"modUri": "tmod:@turbot/turbot-iam"
}
}

turbotDirectoryServer

{
"description": "The server to connect to for authentication via Turbot",
"type": "string",
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/turbotDirectoryServer",
"modUri": "tmod:@turbot/turbot-iam"
}
}

turbotLevelDefinition

{
"description": "Internal format for Turbot Levels.",
"type": "object",
"properties": {
"level": {
"type": "string",
"format": "uri-reference",
".turbot": {
"uri": "tmod:@turbot/turbot#/definitions/$ref",
"modUri": "tmod:@turbot/turbot"
},
"pattern": "user|metadata|readonly|admin|owner|operator"
},
"type": {
"type": "string",
"format": "uri-reference",
".turbot": {
"uri": "tmod:@turbot/turbot#/definitions/$ref",
"modUri": "tmod:@turbot/turbot"
},
"pattern": "^tmod:@turbot/turbot"
}
},
"required": [
"level",
"type"
],
"additionalProperties": false,
"tests": [
{
"description": "Valid level definition",
"input": {
"level": "tmod:@turbot/turbot-iam#/permission/levels/admin",
"type": "tmod:@turbot/turbot-iam#/permission/types/turbot"
}
},
{
"description": "invalid type definition",
"input": {
"level": "tmod:@turbot/turbot-iam#/permission/levels/admin",
"type": "tmod:@turbot/azure-s3#/permission/types/s3"
},
"expected": false
},
{
"description": "Invalid - Levels includes a non #/permission/levels/* path",
"expected": false,
"input": {
"level": "#/definitions/foo",
"type": "#/permission/types/foo"
}
},
{
"description": "Invalid - Types includes a non #/permission/types/* path",
"expected": false,
"input": {
"level": "#/permission/levels/user",
"type": "#/definitions/bar"
}
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/turbotLevelDefinition",
"modUri": "tmod:@turbot/turbot-iam"
}
}

turbotPermissionLevelReference

{
"allOf": [
{
"$ref": "turbot#/definitions/permissionLevelReference"
},
{
"pattern": "user|metadata|readonly|admin|owner|operator"
}
],
"tests": [
{
"description": "valid permission type",
"input": "tmod:@turbot/turbot#/permission/levels/admin"
},
{
"description": "invalid - turbot permission type",
"input": "tmod:@turbot/azure-storage#/permission/types/storage",
"expected": false
},
{
"description": "invalid - category",
"input": "tmod:@turbot/aws-s3#/control/types/bucketApproved",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/turbotPermissionLevelReference",
"modUri": "tmod:@turbot/turbot-iam"
}
}

turbotPermissionTypeReference

{
"allOf": [
{
"$ref": "turbot#/definitions/permissionTypeReference"
},
{
"pattern": "^tmod:@turbot/turbot"
}
],
"tests": [
{
"description": "valid permission type",
"input": "tmod:@turbot/turbot#/permission/types/s3"
},
{
"description": "invalid - turbot permission type",
"input": "tmod:@turbot/azure-storage#/permission/types/storage",
"expected": false
},
{
"description": "invalid - category",
"input": "tmod:@turbot/aws-s3#/control/types/bucketApproved",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/turbotPermissionTypeReference",
"modUri": "tmod:@turbot/turbot-iam"
}
}

uuidv4

{
"description": "Unique identifier in <a href=\"https://www.uuidgenerator.net/version4\">UUID Version 4</a> format.",
"example": "c97093ae-f387-4dfc-bb47-bba172b6cb41",
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
"tests": [
{
"description": "Valid",
"input": "c97093ae-f387-4dfc-bb47-bba172b6cb41"
},
{
"description": "Invalid - too short",
"input": "c97093ae-f387-4dfc-bb47-bba172b6cb4",
"expected": false
},
{
"description": "Invalid - special character",
"input": "c97093ae-f387-4dfc-bb47-bba172b6cb4@",
"expected": false
},
{
"description": "Invalid - incorrect separator",
"input": "c97093ae/f387/4dfc/bb47/bba172b6cb41",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/turbot-iam#/definitions/uuidv4",
"modUri": "tmod:@turbot/turbot-iam"
}
}