{
  "typeName" : "AWS::MediaConnect::RouterInput",
  "description" : "Represents a router input in AWS Elemental MediaConnect that is used to ingest content to be transmitted to router outputs",
  "definitions" : {
    "AutomaticEncryptionKeyConfiguration" : {
      "type" : "object",
      "description" : "Configuration settings for automatic encryption key management, where MediaConnect handles key creation and rotation.",
      "additionalProperties" : false
    },
    "Day" : {
      "type" : "string",
      "enum" : [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ]
    },
    "DefaultMaintenanceConfiguration" : {
      "type" : "object",
      "description" : "Configuration settings for default maintenance scheduling.",
      "additionalProperties" : false
    },
    "FailoverInputSourcePriorityMode" : {
      "type" : "string",
      "enum" : [ "NO_PRIORITY", "PRIMARY_SECONDARY" ]
    },
    "FailoverRouterInputConfiguration" : {
      "type" : "object",
      "description" : "Configuration settings for a failover router input that allows switching between two input sources.",
      "properties" : {
        "NetworkInterfaceArn" : {
          "type" : "string",
          "pattern" : "^arn:(aws[a-zA-Z-]*):mediaconnect:[a-z0-9-]+:[0-9]{12}:routerNetworkInterface:[a-z0-9]{12}$",
          "description" : "The ARN of the network interface to use for this failover router input."
        },
        "ProtocolConfigurations" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/FailoverRouterInputProtocolConfiguration"
          },
          "description" : "A list of exactly two protocol configurations for the failover input sources. Both must use the same protocol type."
        },
        "SourcePriorityMode" : {
          "$ref" : "#/definitions/FailoverInputSourcePriorityMode"
        },
        "PrimarySourceIndex" : {
          "type" : "integer",
          "maximum" : 1,
          "minimum" : 0,
          "description" : "The index (0 or 1) that specifies which source in the protocol configurations list is currently active. Used to control which of the two failover sources is currently selected. This field is ignored when sourcePriorityMode is set to NO_PRIORITY"
        }
      },
      "required" : [ "NetworkInterfaceArn", "ProtocolConfigurations", "SourcePriorityMode" ],
      "additionalProperties" : false
    },
    "FailoverRouterInputProtocolConfiguration" : {
      "description" : "Protocol configuration settings for failover router inputs.",
      "oneOf" : [ {
        "type" : "object",
        "title" : "Rtp",
        "properties" : {
          "Rtp" : {
            "$ref" : "#/definitions/RtpRouterInputConfiguration"
          }
        },
        "required" : [ "Rtp" ],
        "additionalProperties" : false
      }, {
        "type" : "object",
        "title" : "Rist",
        "properties" : {
          "Rist" : {
            "$ref" : "#/definitions/RistRouterInputConfiguration"
          }
        },
        "required" : [ "Rist" ],
        "additionalProperties" : false
      }, {
        "type" : "object",
        "title" : "SrtListener",
        "properties" : {
          "SrtListener" : {
            "$ref" : "#/definitions/SrtListenerRouterInputConfiguration"
          }
        },
        "required" : [ "SrtListener" ],
        "additionalProperties" : false
      }, {
        "type" : "object",
        "title" : "SrtCaller",
        "properties" : {
          "SrtCaller" : {
            "$ref" : "#/definitions/SrtCallerRouterInputConfiguration"
          }
        },
        "required" : [ "SrtCaller" ],
        "additionalProperties" : false
      } ]
    },
    "FlowTransitEncryption" : {
      "type" : "object",
      "description" : "The configuration that defines how content is encrypted during transit between the MediaConnect router and a MediaConnect flow.",
      "properties" : {
        "EncryptionKeyType" : {
          "$ref" : "#/definitions/FlowTransitEncryptionKeyType"
        },
        "EncryptionKeyConfiguration" : {
          "$ref" : "#/definitions/FlowTransitEncryptionKeyConfiguration"
        }
      },
      "required" : [ "EncryptionKeyConfiguration" ],
      "additionalProperties" : false
    },
    "FlowTransitEncryptionKeyConfiguration" : {
      "description" : "Configuration settings for flow transit encryption keys.",
      "oneOf" : [ {
        "type" : "object",
        "title" : "SecretsManager",
        "properties" : {
          "SecretsManager" : {
            "$ref" : "#/definitions/SecretsManagerEncryptionKeyConfiguration"
          }
        },
        "required" : [ "SecretsManager" ],
        "additionalProperties" : false
      }, {
        "type" : "object",
        "title" : "Automatic",
        "properties" : {
          "Automatic" : {
            "$ref" : "#/definitions/AutomaticEncryptionKeyConfiguration"
          }
        },
        "required" : [ "Automatic" ],
        "additionalProperties" : false
      } ]
    },
    "FlowTransitEncryptionKeyType" : {
      "type" : "string",
      "enum" : [ "SECRETS_MANAGER", "AUTOMATIC" ]
    },
    "ForwardErrorCorrectionState" : {
      "type" : "string",
      "enum" : [ "ENABLED", "DISABLED" ]
    },
    "MaintenanceConfiguration" : {
      "description" : "The configuration settings for maintenance operations, including preferred maintenance windows and schedules.",
      "oneOf" : [ {
        "type" : "object",
        "title" : "PreferredDayTime",
        "properties" : {
          "PreferredDayTime" : {
            "$ref" : "#/definitions/PreferredDayTimeMaintenanceConfiguration"
          }
        },
        "required" : [ "PreferredDayTime" ],
        "additionalProperties" : false
      }, {
        "type" : "object",
        "title" : "Default",
        "properties" : {
          "Default" : {
            "$ref" : "#/definitions/DefaultMaintenanceConfiguration"
          }
        },
        "required" : [ "Default" ],
        "additionalProperties" : false
      } ]
    },
    "MaintenanceType" : {
      "type" : "string",
      "enum" : [ "PREFERRED_DAY_TIME", "DEFAULT" ]
    },
    "MediaConnectFlowRouterInputConfiguration" : {
      "type" : "object",
      "description" : "Configuration settings for connecting a router input to a flow output.",
      "properties" : {
        "FlowArn" : {
          "type" : "string",
          "pattern" : "^arn:(aws[a-zA-Z-]*):mediaconnect:[a-z0-9-]+:[0-9]{12}:flow:[a-zA-Z0-9-]+:[a-zA-Z0-9_-]+$",
          "description" : "The ARN of the flow to connect to."
        },
        "FlowOutputArn" : {
          "type" : "string",
          "pattern" : "^arn:(aws[a-zA-Z-]*):mediaconnect:[a-z0-9-]+:[0-9]{12}:output:[a-zA-Z0-9-]+:[a-zA-Z0-9_-]+$",
          "description" : "The ARN of the flow output to connect to this router input."
        },
        "SourceTransitDecryption" : {
          "$ref" : "#/definitions/FlowTransitEncryption"
        }
      },
      "required" : [ "SourceTransitDecryption" ],
      "additionalProperties" : false
    },
    "MergeRouterInputConfiguration" : {
      "type" : "object",
      "description" : "Configuration settings for a merge router input that combines two input sources.",
      "properties" : {
        "NetworkInterfaceArn" : {
          "type" : "string",
          "pattern" : "^arn:(aws[a-zA-Z-]*):mediaconnect:[a-z0-9-]+:[0-9]{12}:routerNetworkInterface:[a-z0-9]{12}$",
          "description" : "The ARN of the network interface to use for this merge router input."
        },
        "ProtocolConfigurations" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/definitions/MergeRouterInputProtocolConfiguration"
          },
          "description" : "A list of exactly two protocol configurations for the merge input sources. Both must use the same protocol type."
        },
        "MergeRecoveryWindowMilliseconds" : {
          "type" : "integer",
          "description" : "The time window in milliseconds for merging the two input sources."
        }
      },
      "required" : [ "MergeRecoveryWindowMilliseconds", "NetworkInterfaceArn", "ProtocolConfigurations" ],
      "additionalProperties" : false
    },
    "MergeRouterInputProtocolConfiguration" : {
      "description" : "Protocol configuration settings for merge router inputs.",
      "oneOf" : [ {
        "type" : "object",
        "title" : "Rtp",
        "properties" : {
          "Rtp" : {
            "$ref" : "#/definitions/RtpRouterInputConfiguration"
          }
        },
        "required" : [ "Rtp" ],
        "additionalProperties" : false
      }, {
        "type" : "object",
        "title" : "Rist",
        "properties" : {
          "Rist" : {
            "$ref" : "#/definitions/RistRouterInputConfiguration"
          }
        },
        "required" : [ "Rist" ],
        "additionalProperties" : false
      } ]
    },
    "PreferredDayTimeMaintenanceConfiguration" : {
      "type" : "object",
      "description" : "Configuration for preferred day and time maintenance settings.",
      "properties" : {
        "Day" : {
          "$ref" : "#/definitions/Day"
        },
        "Time" : {
          "type" : "string",
          "description" : "The preferred time for maintenance operations."
        }
      },
      "required" : [ "Day", "Time" ],
      "additionalProperties" : false
    },
    "RistRouterInputConfiguration" : {
      "type" : "object",
      "description" : "The configuration settings for a router input using the RIST (Reliable Internet Stream Transport) protocol, including the port and recovery latency.",
      "properties" : {
        "Port" : {
          "type" : "integer",
          "maximum" : 30000,
          "minimum" : 3000,
          "description" : "The port number used for the RIST protocol in the router input configuration."
        },
        "RecoveryLatencyMilliseconds" : {
          "type" : "integer",
          "maximum" : 10000,
          "minimum" : 10,
          "description" : "The recovery latency in milliseconds for the RIST protocol in the router input configuration."
        }
      },
      "required" : [ "Port", "RecoveryLatencyMilliseconds" ],
      "additionalProperties" : false
    },
    "RouterInputConfiguration" : {
      "description" : "The configuration settings for a router input.",
      "oneOf" : [ {
        "type" : "object",
        "title" : "Standard",
        "properties" : {
          "Standard" : {
            "$ref" : "#/definitions/StandardRouterInputConfiguration"
          }
        },
        "required" : [ "Standard" ],
        "additionalProperties" : false
      }, {
        "type" : "object",
        "title" : "Failover",
        "properties" : {
          "Failover" : {
            "$ref" : "#/definitions/FailoverRouterInputConfiguration"
          }
        },
        "required" : [ "Failover" ],
        "additionalProperties" : false
      }, {
        "type" : "object",
        "title" : "Merge",
        "properties" : {
          "Merge" : {
            "$ref" : "#/definitions/MergeRouterInputConfiguration"
          }
        },
        "required" : [ "Merge" ],
        "additionalProperties" : false
      }, {
        "type" : "object",
        "title" : "MediaConnectFlow",
        "properties" : {
          "MediaConnectFlow" : {
            "$ref" : "#/definitions/MediaConnectFlowRouterInputConfiguration"
          }
        },
        "required" : [ "MediaConnectFlow" ],
        "additionalProperties" : false
      } ]
    },
    "RouterInputProtocol" : {
      "type" : "string",
      "enum" : [ "RTP", "RIST", "SRT_CALLER", "SRT_LISTENER" ]
    },
    "RouterInputProtocolConfiguration" : {
      "description" : "The protocol configuration settings for a router input.",
      "oneOf" : [ {
        "type" : "object",
        "title" : "Rtp",
        "properties" : {
          "Rtp" : {
            "$ref" : "#/definitions/RtpRouterInputConfiguration"
          }
        },
        "required" : [ "Rtp" ],
        "additionalProperties" : false
      }, {
        "type" : "object",
        "title" : "Rist",
        "properties" : {
          "Rist" : {
            "$ref" : "#/definitions/RistRouterInputConfiguration"
          }
        },
        "required" : [ "Rist" ],
        "additionalProperties" : false
      }, {
        "type" : "object",
        "title" : "SrtListener",
        "properties" : {
          "SrtListener" : {
            "$ref" : "#/definitions/SrtListenerRouterInputConfiguration"
          }
        },
        "required" : [ "SrtListener" ],
        "additionalProperties" : false
      }, {
        "type" : "object",
        "title" : "SrtCaller",
        "properties" : {
          "SrtCaller" : {
            "$ref" : "#/definitions/SrtCallerRouterInputConfiguration"
          }
        },
        "required" : [ "SrtCaller" ],
        "additionalProperties" : false
      } ]
    },
    "RouterInputState" : {
      "type" : "string",
      "enum" : [ "CREATING", "STANDBY", "STARTING", "ACTIVE", "STOPPING", "DELETING", "UPDATING", "ERROR", "RECOVERING", "MIGRATING" ]
    },
    "RouterInputTier" : {
      "type" : "string",
      "enum" : [ "INPUT_100", "INPUT_50", "INPUT_20" ]
    },
    "RouterInputTransitEncryption" : {
      "type" : "object",
      "description" : "The transit encryption settings for a router input.",
      "properties" : {
        "EncryptionKeyType" : {
          "$ref" : "#/definitions/RouterInputTransitEncryptionKeyType"
        },
        "EncryptionKeyConfiguration" : {
          "$ref" : "#/definitions/RouterInputTransitEncryptionKeyConfiguration"
        }
      },
      "required" : [ "EncryptionKeyConfiguration" ],
      "additionalProperties" : false
    },
    "RouterInputTransitEncryptionKeyConfiguration" : {
      "description" : "Defines the configuration settings for transit encryption keys.",
      "oneOf" : [ {
        "type" : "object",
        "title" : "SecretsManager",
        "properties" : {
          "SecretsManager" : {
            "$ref" : "#/definitions/SecretsManagerEncryptionKeyConfiguration"
          }
        },
        "required" : [ "SecretsManager" ],
        "additionalProperties" : false
      }, {
        "type" : "object",
        "title" : "Automatic",
        "properties" : {
          "Automatic" : {
            "$ref" : "#/definitions/AutomaticEncryptionKeyConfiguration"
          }
        },
        "required" : [ "Automatic" ],
        "additionalProperties" : false
      } ]
    },
    "RouterInputTransitEncryptionKeyType" : {
      "type" : "string",
      "enum" : [ "SECRETS_MANAGER", "AUTOMATIC" ]
    },
    "RouterInputType" : {
      "type" : "string",
      "enum" : [ "STANDARD", "FAILOVER", "MERGE", "MEDIACONNECT_FLOW" ]
    },
    "RoutingScope" : {
      "type" : "string",
      "enum" : [ "REGIONAL", "GLOBAL" ]
    },
    "RtpRouterInputConfiguration" : {
      "type" : "object",
      "description" : "The configuration settings for a Router Input using the RTP (Real-Time Transport Protocol) protocol, including the port and forward error correction state.",
      "properties" : {
        "Port" : {
          "type" : "integer",
          "maximum" : 30000,
          "minimum" : 3000,
          "description" : "The port number used for the RTP protocol in the router input configuration."
        },
        "ForwardErrorCorrection" : {
          "$ref" : "#/definitions/ForwardErrorCorrectionState"
        }
      },
      "required" : [ "Port" ],
      "additionalProperties" : false
    },
    "SecretsManagerEncryptionKeyConfiguration" : {
      "type" : "object",
      "description" : "The configuration settings for transit encryption using AWS Secrets Manager, including the secret ARN and role ARN.",
      "properties" : {
        "SecretArn" : {
          "type" : "string",
          "pattern" : "^arn:(aws[a-zA-Z-]*):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:[a-zA-Z0-9/_+=.@-]+$",
          "description" : "The ARN of the AWS Secrets Manager secret used for transit encryption."
        },
        "RoleArn" : {
          "type" : "string",
          "pattern" : "^arn:(aws[a-zA-Z-]*):iam::[0-9]{12}:role/[a-zA-Z0-9_+=,.@-]+$",
          "description" : "The ARN of the IAM role assumed by MediaConnect to access the AWS Secrets Manager secret."
        }
      },
      "required" : [ "RoleArn", "SecretArn" ],
      "additionalProperties" : false
    },
    "SrtCallerRouterInputConfiguration" : {
      "type" : "object",
      "description" : "The configuration settings for a router input using the SRT (Secure Reliable Transport) protocol in caller mode, including the source address and port, minimum latency, stream ID, and decryption key configuration.",
      "properties" : {
        "SourceAddress" : {
          "type" : "string",
          "description" : "The source IP address for the SRT protocol in caller mode."
        },
        "SourcePort" : {
          "type" : "integer",
          "maximum" : 65535,
          "minimum" : 0,
          "description" : "The source port number for the SRT protocol in caller mode."
        },
        "MinimumLatencyMilliseconds" : {
          "type" : "integer",
          "maximum" : 10000,
          "minimum" : 10,
          "description" : "The minimum latency in milliseconds for the SRT protocol in caller mode."
        },
        "StreamId" : {
          "type" : "string",
          "description" : "The stream ID for the SRT protocol in caller mode."
        },
        "DecryptionConfiguration" : {
          "$ref" : "#/definitions/SrtDecryptionConfiguration"
        }
      },
      "required" : [ "MinimumLatencyMilliseconds", "SourceAddress", "SourcePort" ],
      "additionalProperties" : false
    },
    "SrtDecryptionConfiguration" : {
      "type" : "object",
      "description" : "Contains the configuration settings for decrypting SRT streams, including the encryption key details and decryption parameters.",
      "properties" : {
        "EncryptionKey" : {
          "$ref" : "#/definitions/SecretsManagerEncryptionKeyConfiguration"
        }
      },
      "required" : [ "EncryptionKey" ],
      "additionalProperties" : false
    },
    "SrtListenerRouterInputConfiguration" : {
      "type" : "object",
      "description" : "The configuration settings for a router input using the SRT (Secure Reliable Transport) protocol in listener mode, including the port, minimum latency, and decryption key configuration.",
      "properties" : {
        "Port" : {
          "type" : "integer",
          "maximum" : 30000,
          "minimum" : 3000,
          "description" : "The port number for the SRT protocol in listener mode."
        },
        "MinimumLatencyMilliseconds" : {
          "type" : "integer",
          "maximum" : 10000,
          "minimum" : 10,
          "description" : "The minimum latency in milliseconds for the SRT protocol in listener mode."
        },
        "DecryptionConfiguration" : {
          "$ref" : "#/definitions/SrtDecryptionConfiguration"
        }
      },
      "required" : [ "MinimumLatencyMilliseconds", "Port" ],
      "additionalProperties" : false
    },
    "StandardRouterInputConfiguration" : {
      "type" : "object",
      "description" : "The configuration settings for a standard router input, including the protocol, protocol-specific configuration, network interface, and availability zone.",
      "properties" : {
        "NetworkInterfaceArn" : {
          "type" : "string",
          "pattern" : "^arn:(aws[a-zA-Z-]*):mediaconnect:[a-z0-9-]+:[0-9]{12}:routerNetworkInterface:[a-z0-9]{12}$",
          "description" : "The Amazon Resource Name (ARN) of the network interface associated with the standard router input."
        },
        "ProtocolConfiguration" : {
          "$ref" : "#/definitions/RouterInputProtocolConfiguration"
        },
        "Protocol" : {
          "$ref" : "#/definitions/RouterInputProtocol"
        }
      },
      "required" : [ "NetworkInterfaceArn", "ProtocolConfiguration" ],
      "additionalProperties" : false
    },
    "Tag" : {
      "type" : "object",
      "properties" : {
        "Key" : {
          "type" : "string"
        },
        "Value" : {
          "type" : "string"
        }
      },
      "required" : [ "Key", "Value" ],
      "additionalProperties" : false
    },
    "Unit" : {
      "type" : "object",
      "additionalProperties" : false
    }
  },
  "properties" : {
    "Arn" : {
      "type" : "string",
      "pattern" : "^arn:(aws[a-zA-Z-]*):mediaconnect:[a-z0-9-]+:[0-9]{12}:routerInput:[a-z0-9]{12}$"
    },
    "AvailabilityZone" : {
      "type" : "string",
      "description" : "The Availability Zone where you want to create the router input. This must be a valid Availability Zone for the region specified by regionName, or the current region if no regionName is provided."
    },
    "Configuration" : {
      "$ref" : "#/definitions/RouterInputConfiguration"
    },
    "CreatedAt" : {
      "type" : "string",
      "description" : "The timestamp when the router input was created.",
      "format" : "date-time"
    },
    "Id" : {
      "type" : "string",
      "description" : "The unique identifier of the router input."
    },
    "InputType" : {
      "$ref" : "#/definitions/RouterInputType"
    },
    "IpAddress" : {
      "type" : "string",
      "description" : "The IP address of the router input."
    },
    "MaintenanceConfiguration" : {
      "$ref" : "#/definitions/MaintenanceConfiguration"
    },
    "MaintenanceType" : {
      "$ref" : "#/definitions/MaintenanceType"
    },
    "MaximumBitrate" : {
      "type" : "integer",
      "description" : "The maximum bitrate for the router input."
    },
    "Name" : {
      "type" : "string",
      "maxLength" : 128,
      "minLength" : 1,
      "description" : "The name of the router input."
    },
    "RegionName" : {
      "type" : "string",
      "description" : "The AWS Region for the router input. Defaults to the current region if not specified."
    },
    "RoutedOutputs" : {
      "type" : "integer",
      "description" : "The number of router outputs associated with the router input."
    },
    "RoutingScope" : {
      "$ref" : "#/definitions/RoutingScope"
    },
    "State" : {
      "$ref" : "#/definitions/RouterInputState"
    },
    "Tags" : {
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/Tag"
      },
      "description" : "Key-value pairs that can be used to tag and organize this router input.",
      "insertionOrder" : false
    },
    "Tier" : {
      "$ref" : "#/definitions/RouterInputTier"
    },
    "TransitEncryption" : {
      "$ref" : "#/definitions/RouterInputTransitEncryption"
    },
    "UpdatedAt" : {
      "type" : "string",
      "description" : "The timestamp when the router input was last updated.",
      "format" : "date-time"
    }
  },
  "required" : [ "Configuration", "MaximumBitrate", "Name", "RoutingScope", "Tier" ],
  "readOnlyProperties" : [ "/properties/Arn", "/properties/CreatedAt", "/properties/Id", "/properties/InputType", "/properties/IpAddress", "/properties/MaintenanceType", "/properties/RoutedOutputs", "/properties/State", "/properties/UpdatedAt" ],
  "createOnlyProperties" : [ "/properties/Configuration/Standard/NetworkInterfaceArn", "/properties/Configuration/Merge/NetworkInterfaceArn", "/properties/Configuration/Failover/NetworkInterfaceArn", "/properties/AvailabilityZone", "/properties/RegionName" ],
  "primaryIdentifier" : [ "/properties/Arn" ],
  "handlers" : {
    "create" : {
      "permissions" : [ "mediaconnect:GetRouterInput", "mediaconnect:ListRouterInputs", "ec2:CreateNetworkInterface", "iam:PassRole", "mediaconnect:AssociateRouterNetworkInterface", "mediaconnect:CreateRouterInput", "mediaconnect:TagResource", "mediaconnect:UpdateFlowOutput" ]
    },
    "delete" : {
      "permissions" : [ "mediaconnect:GetRouterInput", "mediaconnect:UpdateRouterInput", "mediaconnect:UpdateFlowOutput", "mediaconnect:ListRouterInputs", "mediaconnect:DeleteRouterInput" ]
    },
    "list" : {
      "permissions" : [ "mediaconnect:ListRouterInputs" ]
    },
    "read" : {
      "permissions" : [ "mediaconnect:GetRouterInput" ]
    },
    "update" : {
      "permissions" : [ "mediaconnect:ListTagsForResource", "mediaconnect:TagResource", "mediaconnect:UntagResource", "mediaconnect:GetRouterInput", "ec2:CreateNetworkInterface", "iam:PassRole", "mediaconnect:AssociateRouterNetworkInterface", "mediaconnect:UpdateFlowOutput", "mediaconnect:UpdateRouterInput" ]
    }
  },
  "tagging" : {
    "cloudFormationSystemTags" : true,
    "permissions" : [ "mediaconnect:ListTagsForResource", "mediaconnect:TagResource", "mediaconnect:UntagResource" ],
    "tagOnCreate" : true,
    "tagProperty" : "/properties/Tags",
    "tagUpdatable" : true,
    "taggable" : true
  },
  "propertyTransform" : {
    "/properties/MaintenanceConfiguration/PreferredDayTime/Time" : "($groups := $match(Time, /^([0-9]{2}):([0-9]{2})(?::([0-9]{2})(?:\\.[0-9]+)?)?(?:Z|([+\\-][0-9]{2}:[0-9]{2}))?$/).groups;$seconds := $groups[2] ? $groups[2] : \"00\";$timezone := $groups[3] ? $groups[3] : \"+00:00\";$join([$groups[0], \":\", $groups[1], \":\", $seconds, \"Z\"]);)"
  },
  "additionalProperties" : false
}