def messages_delete(request): """ Delete message from history and emit changes --- delete: security: - APIKeyHeader: [] tags: - "Legacy API" summary: "Delete message from history and emit changes" description: "" operationId: "messages_delete" consumes: - "application/json" produces: - "application/json" parameters: - in: "body" name: "body" description: "Request JSON body" required: true schema: $ref: "#/definitions/MessagesDeleteBody" responses: 422: description: "Unprocessable Entity" 200: description: "Success" """ schema = schemas.MessagesDeleteBodySchema(context={"request": request}, many=True) data = schema.load(request.json_body).data for msg in data: gevent.spawn(operations.delete_message, msg) return data
def api_spec(self): """ OpenApi 2.0 spec --- get: tags: - "OpenApi 2.0 spec" summary: "Return openapi spec purposes" description: "" operationId: "api_spec" consumes: - "application/json" produces: - "application/json" parameters: responses: 200: description: "Success" """ spec = APISpec(title="Channelstream API", version="0.7.0", plugins=(MarshmallowPlugin(), )) spec.definition("ConnectBody", schema=schemas.ConnectBodySchema) spec.definition("SubscribeBody", schema=schemas.SubscribeBodySchema) spec.definition("UnsubscribeBody", schema=schemas.UnsubscribeBodySchema) spec.definition("UserStateBody", schema=schemas.UserStateBodySchema) spec.definition("MessagesBody", schema=schemas.MessageBodySchema(many=True)) spec.definition("MessageBody", schema=schemas.MessageBodySchema()) spec.definition("MessageEditBody", schema=schemas.MessageEditBodySchema(many=True)) spec.definition("MessagesDeleteBody", schema=schemas.MessagesDeleteBodySchema(many=True)) spec.definition("DisconnectBody", schema=schemas.DisconnectBodySchema) spec.definition("ChannelConfigBody", schema=schemas.ChannelConfigSchema) spec.definition("ChannelInfoBody", schema=schemas.ChannelInfoBodySchema) # legacy api add_pyramid_paths(spec, "legacy_connect", request=self.request) add_pyramid_paths(spec, "legacy_subscribe", request=self.request) add_pyramid_paths(spec, "legacy_unsubscribe", request=self.request) add_pyramid_paths(spec, "legacy_user_state", request=self.request) add_pyramid_paths(spec, "legacy_message", request=self.request) add_pyramid_paths(spec, "legacy_channel_config", request=self.request) add_pyramid_paths(spec, "legacy_info", request=self.request) add_pyramid_paths(spec, "api_listen", request=self.request) add_pyramid_paths(spec, "api_listen_ws", request=self.request) add_pyramid_paths(spec, "api_disconnect", request=self.request) # v1 api # do not expose this yet # add_pyramid_paths(spec, "api_v1_messages", request=self.request) add_pyramid_paths(spec, "admin_json", request=self.request) spec_dict = spec.to_dict() spec_dict["securityDefinitions"] = { "APIKeyHeader": { "type": "apiKey", "name": "X-Channelstream-Secret", "in": "header", } } return spec_dict