{
  "metadata": {
    "apiVersion": "2018-11-29",
    "endpointPrefix": "execute-api",
    "signingName": "execute-api",
    "serviceFullName": "AmazonApiGatewayManagementApi",
    "serviceId": "ApiGatewayManagementApi",
    "protocol": "rest-json",
    "jsonVersion": "1.1",
    "uid": "apigatewaymanagementapi-2018-11-29",
    "signatureVersion": "v4",
    "auth": [
      "aws.auth#sigv4"
    ]
  },
  "operations": {
    "DeleteConnection": {
      "name": "DeleteConnection",
      "http": {
        "method": "DELETE",
        "requestUri": "/@connections/{connectionId}",
        "responseCode": 204
      },
      "input": {
        "shape": "DeleteConnectionRequest"
      },
      "errors": [
        {
          "shape": "GoneException"
        },
        {
          "shape": "LimitExceededException"
        },
        {
          "shape": "ForbiddenException"
        }
      ]
    },
    "GetConnection": {
      "name": "GetConnection",
      "http": {
        "method": "GET",
        "requestUri": "/@connections/{connectionId}",
        "responseCode": 200
      },
      "input": {
        "shape": "GetConnectionRequest"
      },
      "output": {
        "shape": "GetConnectionResponse"
      },
      "errors": [
        {
          "shape": "GoneException"
        },
        {
          "shape": "LimitExceededException"
        },
        {
          "shape": "ForbiddenException"
        }
      ]
    },
    "PostToConnection": {
      "name": "PostToConnection",
      "http": {
        "method": "POST",
        "requestUri": "/@connections/{connectionId}",
        "responseCode": 200
      },
      "input": {
        "shape": "PostToConnectionRequest"
      },
      "errors": [
        {
          "shape": "GoneException"
        },
        {
          "shape": "LimitExceededException"
        },
        {
          "shape": "PayloadTooLargeException"
        },
        {
          "shape": "ForbiddenException"
        }
      ]
    }
  },
  "shapes": {
    "Data": {
      "type": "blob",
      "max": 131072
    },
    "DeleteConnectionRequest": {
      "type": "structure",
      "members": {
        "ConnectionId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "connectionId"
        }
      },
      "required": [
        "ConnectionId"
      ]
    },
    "ForbiddenException": {
      "type": "structure",
      "members": {},
      "exception": true,
      "error": {
        "httpStatusCode": 403
      }
    },
    "GetConnectionRequest": {
      "type": "structure",
      "members": {
        "ConnectionId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "connectionId"
        }
      },
      "required": [
        "ConnectionId"
      ]
    },
    "GetConnectionResponse": {
      "type": "structure",
      "members": {
        "ConnectedAt": {
          "shape": "__timestampIso8601",
          "locationName": "connectedAt"
        },
        "Identity": {
          "shape": "Identity",
          "locationName": "identity"
        },
        "LastActiveAt": {
          "shape": "__timestampIso8601",
          "locationName": "lastActiveAt"
        }
      }
    },
    "GoneException": {
      "type": "structure",
      "members": {},
      "exception": true,
      "error": {
        "httpStatusCode": 410
      }
    },
    "Identity": {
      "type": "structure",
      "members": {
        "SourceIp": {
          "shape": "__string",
          "locationName": "sourceIp"
        },
        "UserAgent": {
          "shape": "__string",
          "locationName": "userAgent"
        }
      },
      "required": [
        "SourceIp",
        "UserAgent"
      ]
    },
    "PayloadTooLargeException": {
      "type": "structure",
      "members": {
        "Message": {
          "shape": "__string",
          "locationName": "message"
        }
      },
      "exception": true,
      "error": {
        "httpStatusCode": 413
      }
    },
    "PostToConnectionRequest": {
      "type": "structure",
      "members": {
        "Data": {
          "shape": "Data"
        },
        "ConnectionId": {
          "shape": "__string",
          "location": "uri",
          "locationName": "connectionId"
        }
      },
      "required": [
        "ConnectionId",
        "Data"
      ],
      "payload": "Data"
    },
    "LimitExceededException": {
      "type": "structure",
      "members": {},
      "exception": true,
      "error": {
        "httpStatusCode": 429
      }
    },
    "__string": {
      "type": "string"
    },
    "__timestampIso8601": {
      "type": "timestamp",
      "timestampFormat": "iso8601"
    }
  }
}