| 
<?phpnamespace Aws\Api;
 
 /**
 * Represents an API operation.
 */
 class Operation extends AbstractModel
 {
 private $input;
 private $output;
 private $errors;
 
 public function __construct(array $definition, ShapeMap $shapeMap)
 {
 $definition['type'] = 'structure';
 
 if (!isset($definition['http']['method'])) {
 $definition['http']['method'] = 'POST';
 }
 
 if (!isset($definition['http']['requestUri'])) {
 $definition['http']['requestUri'] = '/';
 }
 
 parent::__construct($definition, $shapeMap);
 }
 
 /**
 * Returns an associative array of the HTTP attribute of the operation:
 *
 * - method: HTTP method of the operation
 * - requestUri: URI of the request (can include URI template placeholders)
 *
 * @return array
 */
 public function getHttp()
 {
 return $this->definition['http'];
 }
 
 /**
 * Get the input shape of the operation.
 *
 * @return StructureShape
 */
 public function getInput()
 {
 if (!$this->input) {
 if ($input = $this['input']) {
 $this->input = $this->shapeFor($input);
 } else {
 $this->input = new StructureShape([], $this->shapeMap);
 }
 }
 
 return $this->input;
 }
 
 /**
 * Get the output shape of the operation.
 *
 * @return StructureShape
 */
 public function getOutput()
 {
 if (!$this->output) {
 if ($output = $this['output']) {
 $this->output = $this->shapeFor($output);
 } else {
 $this->output = new StructureShape([], $this->shapeMap);
 }
 }
 
 return $this->output;
 }
 
 /**
 * Get an array of operation error shapes.
 *
 * @return Shape[]
 */
 public function getErrors()
 {
 if ($this->errors === null) {
 if ($errors = $this['errors']) {
 foreach ($errors as &$error) {
 $error = $this->shapeFor($error);
 }
 $this->errors = $errors;
 } else {
 $this->errors = [];
 }
 }
 
 return $this->errors;
 }
 }
 
 |