openapi: 3.1.0 info: title: Google Cloud Pub/Sub API description: >- The Cloud Pub/Sub API provides reliable, many-to-many, asynchronous messaging between applications. Publishers send messages to topics, and subscribers receive messages via subscriptions. It supports both push and pull delivery modes. version: v1 contact: name: Google Cloud url: https://cloud.google.com/pubsub license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 externalDocs: description: Google Cloud Pub/Sub Documentation url: https://cloud.google.com/pubsub/docs/reference/rest servers: - url: https://pubsub.googleapis.com/v1 description: Google Cloud Pub/Sub API v1 security: - oauth2: [] tags: - name: Schemas description: Operations for managing Pub/Sub schemas - name: Subscriptions description: Operations for managing Pub/Sub subscriptions - name: Topics description: Operations for managing Pub/Sub topics paths: /projects/{projectId}/topics: get: operationId: listTopics summary: Google Cloud Pub/Sub List topics description: Lists matching topics in the given project. tags: - Topics parameters: - name: projectId in: path required: true schema: type: string - name: pageSize in: query schema: type: integer - name: pageToken in: query schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/ListTopicsResponse' /projects/{projectId}/topics/{topicId}: get: operationId: getTopic summary: Google Cloud Pub/Sub Get a topic description: Gets the configuration of a topic. tags: - Topics parameters: - name: projectId in: path required: true schema: type: string - name: topicId in: path required: true schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Topic' put: operationId: createTopic summary: Google Cloud Pub/Sub Create a topic description: Creates the given topic with the given name. tags: - Topics parameters: - name: projectId in: path required: true schema: type: string - name: topicId in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Topic' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Topic' delete: operationId: deleteTopic summary: Google Cloud Pub/Sub Delete a topic description: Deletes the topic with the given name. tags: - Topics parameters: - name: projectId in: path required: true schema: type: string - name: topicId in: path required: true schema: type: string responses: '200': description: Successful response /projects/{projectId}/topics/{topicId}:publish: post: operationId: publishMessages summary: Google Cloud Pub/Sub Publish messages description: Adds one or more messages to the topic. tags: - Topics parameters: - name: projectId in: path required: true schema: type: string - name: topicId in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: messages: type: array items: $ref: '#/components/schemas/PubsubMessage' responses: '200': description: Successful response content: application/json: schema: type: object properties: messageIds: type: array items: type: string /projects/{projectId}/subscriptions: get: operationId: listSubscriptions summary: Google Cloud Pub/Sub List subscriptions description: Lists matching subscriptions in the given project. tags: - Subscriptions parameters: - name: projectId in: path required: true schema: type: string - name: pageSize in: query schema: type: integer - name: pageToken in: query schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/ListSubscriptionsResponse' /projects/{projectId}/subscriptions/{subscriptionId}: get: operationId: getSubscription summary: Google Cloud Pub/Sub Get a subscription description: Gets the configuration details of a subscription. tags: - Subscriptions parameters: - name: projectId in: path required: true schema: type: string - name: subscriptionId in: path required: true schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Subscription' put: operationId: createSubscription summary: Google Cloud Pub/Sub Create a subscription description: Creates a subscription to a given topic. tags: - Subscriptions parameters: - name: projectId in: path required: true schema: type: string - name: subscriptionId in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Subscription' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Subscription' delete: operationId: deleteSubscription summary: Google Cloud Pub/Sub Delete a subscription description: Deletes an existing subscription. tags: - Subscriptions parameters: - name: projectId in: path required: true schema: type: string - name: subscriptionId in: path required: true schema: type: string responses: '200': description: Successful response /projects/{projectId}/subscriptions/{subscriptionId}:pull: post: operationId: pullMessages summary: Google Cloud Pub/Sub Pull messages description: Pulls messages from the server. tags: - Subscriptions parameters: - name: projectId in: path required: true schema: type: string - name: subscriptionId in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: maxMessages: type: integer description: Required. Maximum number of messages to return. responses: '200': description: Successful response content: application/json: schema: type: object properties: receivedMessages: type: array items: $ref: '#/components/schemas/ReceivedMessage' /projects/{projectId}/subscriptions/{subscriptionId}:acknowledge: post: operationId: acknowledgeMessages summary: Google Cloud Pub/Sub Acknowledge messages description: Acknowledges the messages associated with the ack IDs in the request. tags: - Subscriptions parameters: - name: projectId in: path required: true schema: type: string - name: subscriptionId in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: ackIds: type: array items: type: string responses: '200': description: Successful response /projects/{projectId}/schemas: get: operationId: listSchemas summary: Google Cloud Pub/Sub List schemas description: Lists schemas in a project. tags: - Schemas parameters: - name: projectId in: path required: true schema: type: string - name: pageSize in: query schema: type: integer - name: pageToken in: query schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/ListSchemasResponse' post: operationId: createSchema summary: Google Cloud Pub/Sub Create a schema description: Creates a schema in a project. tags: - Schemas parameters: - name: projectId in: path required: true schema: type: string - name: schemaId in: query schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Schema' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Schema' components: securitySchemes: oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://accounts.google.com/o/oauth2/auth tokenUrl: https://oauth2.googleapis.com/token scopes: https://www.googleapis.com/auth/pubsub: View and manage Pub/Sub topics and subscriptions https://www.googleapis.com/auth/cloud-platform: Full access to Google Cloud Platform schemas: Topic: type: object properties: name: type: string description: The name of the topic in the format projects/{project}/topics/{topic}. labels: type: object additionalProperties: type: string messageStoragePolicy: type: object properties: allowedPersistenceRegions: type: array items: type: string kmsKeyName: type: string description: The resource name of the Cloud KMS key to protect access to messages. schemaSettings: type: object properties: schema: type: string encoding: type: string enum: - ENCODING_UNSPECIFIED - JSON - BINARY firstRevisionId: type: string lastRevisionId: type: string satisfiesPzs: type: boolean messageRetentionDuration: type: string description: Duration for message retention, in seconds format (e.g. 86400s). Subscription: type: object properties: name: type: string description: The name of the subscription. topic: type: string description: The name of the topic from which this subscription receives messages. pushConfig: type: object properties: pushEndpoint: type: string attributes: type: object additionalProperties: type: string oidcToken: type: object properties: serviceAccountEmail: type: string audience: type: string ackDeadlineSeconds: type: integer description: The approximate amount of time Pub/Sub waits for acknowledgment. retainAckedMessages: type: boolean messageRetentionDuration: type: string labels: type: object additionalProperties: type: string enableMessageOrdering: type: boolean expirationPolicy: type: object properties: ttl: type: string filter: type: string description: Expression to filter messages. deadLetterPolicy: type: object properties: deadLetterTopic: type: string maxDeliveryAttempts: type: integer retryPolicy: type: object properties: minimumBackoff: type: string maximumBackoff: type: string detached: type: boolean enableExactlyOnceDelivery: type: boolean state: type: string enum: - STATE_UNSPECIFIED - ACTIVE - RESOURCE_ERROR PubsubMessage: type: object properties: data: type: string description: The message data field (base64-encoded). attributes: type: object additionalProperties: type: string messageId: type: string description: Output only. ID of this message. publishTime: type: string format: date-time description: Output only. The time at which the message was published. orderingKey: type: string ReceivedMessage: type: object properties: ackId: type: string message: $ref: '#/components/schemas/PubsubMessage' deliveryAttempt: type: integer Schema: type: object properties: name: type: string type: type: string enum: - TYPE_UNSPECIFIED - PROTOCOL_BUFFER - AVRO definition: type: string revisionId: type: string revisionCreateTime: type: string format: date-time ListTopicsResponse: type: object properties: topics: type: array items: $ref: '#/components/schemas/Topic' nextPageToken: type: string ListSubscriptionsResponse: type: object properties: subscriptions: type: array items: $ref: '#/components/schemas/Subscription' nextPageToken: type: string ListSchemasResponse: type: object properties: schemas: type: array items: $ref: '#/components/schemas/Schema' nextPageToken: type: string