# Pub/Sub 소스 (Beta)

## 개요

{% hint style="info" %}
Pub/Sub Sources API 엔드포인트는 Panther 버전 1.121부터 오픈 베타로 제공되며, 모든 고객이 사용할 수 있습니다. 버그 보고와 기능 요청은 Panther 지원 팀에 공유해 주세요.
{% endhint %}

다음 API 작업을 사용하여 상호 작용하세요 [Pub/Sub Sources](/ko/data-onboarding/data-transports/google/pubsub.md) Panther에서.

## 필수 권한

* 에 대해 `GET` 작업을 수행하려면 API 토큰에 다음 권한이 있어야 합니다. `로그 소스 보기` 권한.
* 에 대해 `POST`, `PUT`및 `DELETE` 작업을 수행하려면 API 토큰에 다음 권한이 있어야 합니다. `로그 소스 관리` 권한.

## 작업

## put pub/sub source

> put updates a pubsub source

```json
{"openapi":"3.0.3","info":{"title":"Panther REST API","version":"1.0"},"tags":[{"name":"pub/sub source","description":"The Pub/Sub source API handles all operations for GCP Pub/Sub log sources"}],"servers":[{"url":"https://{api_host}","variables":{"api_host":{"default":"your-api-host"}}}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","name":"X-API-Key","in":"header"}},"schemas":{"PubSubSourceAPI.ModifyPubSubSource":{"type":"object","properties":{"credentials":{"type":"string","description":"The GCP credentials JSON content (service account key or WIF config). Required on create, optional on update."},"credentialsType":{"type":"string","description":"The type of credentials being used: service_account or wif (Workload Identity Federation).","enum":["service_account","wif"]},"integrationLabel":{"type":"string","description":"The integration label (name)"},"logStreamType":{"type":"string","description":"The log stream type. Supported log stream types: Auto, JSON, JsonArray, Lines, XML","enum":["Auto","JSON","JsonArray","Lines","XML"]},"logStreamTypeOptions":{"$ref":"#/components/schemas/PubSubSourceAPI.LogStreamTypeOptions"},"logTypes":{"type":"array","items":{"type":"string"},"description":"The log types for parsing ingested data"},"projectId":{"type":"string","description":"The GCP project ID. Optional for service_account credentials (derived from the keyfile). Required for WIF."},"regionalEndpoint":{"type":"string","description":"Optional regional endpoint override (e.g. europe-west3). If not set, the global endpoint is used."},"subscriptionId":{"type":"string","description":"The GCP Pub/Sub subscription ID"}},"required":["integrationLabel","subscriptionId","logTypes","logStreamType","credentialsType"]},"PubSubSourceAPI.LogStreamTypeOptions":{"type":"object","properties":{"jsonArrayEnvelopeField":{"type":"string","description":"Path to the array value to extract elements from, only applicable if logStreamType is JsonArray. Leave empty if the input JSON is an array itself"},"xmlRootElement":{"type":"string","description":"The root element name for XML streams, only applicable if logStreamType is XML. Leave empty if the XML events are not enclosed in a root element"}}},"PubSubSourceAPI.PubSubSource":{"type":"object","properties":{"credentials":{"type":"string","description":"The GCP credentials JSON content (service account key or WIF config). Required on create, optional on update."},"credentialsType":{"type":"string","description":"The type of credentials being used: service_account or wif (Workload Identity Federation).","enum":["service_account","wif"]},"integrationId":{"type":"string","description":"The id of the pubsub source"},"integrationLabel":{"type":"string","description":"The integration label (name)"},"logStreamType":{"type":"string","description":"The log stream type. Supported log stream types: Auto, JSON, JsonArray, Lines, XML","enum":["Auto","JSON","JsonArray","Lines","XML"]},"logStreamTypeOptions":{"$ref":"#/components/schemas/PubSubSourceAPI.LogStreamTypeOptions"},"logTypes":{"type":"array","items":{"type":"string"},"description":"The log types for parsing ingested data"},"projectId":{"type":"string","description":"The GCP project ID. Optional for service_account credentials (derived from the keyfile). Required for WIF."},"regionalEndpoint":{"type":"string","description":"Optional regional endpoint override (e.g. europe-west3). If not set, the global endpoint is used."},"subscriptionId":{"type":"string","description":"The GCP Pub/Sub subscription ID"}}},"PubSubSourceAPI.BadRequestError":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"PubSubSourceAPI.NotFoundError":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"PubSubSourceAPI.ExistsError":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"PubSubSourceAPI.ServiceError":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"paths":{"/log-sources/pubsub/{id}":{"put":{"tags":["pub/sub source"],"summary":"put pub/sub source","description":"put updates a pubsub source","operationId":"pub/sub source#put","parameters":[{"name":"id","in":"path","description":"ID of the pubsub source to update","required":true,"schema":{"type":"string","description":"ID of the pubsub source to update"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.ModifyPubSubSource"}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.PubSubSource"}}}},"400":{"description":"bad_request: Bad Request response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.BadRequestError"}}}},"404":{"description":"not_found: Not Found response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.NotFoundError"}}}},"409":{"description":"exists: Conflict response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.ExistsError"}}}},"500":{"description":"service: Internal Server Error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.ServiceError"}}}}}}}}}
```

## POST /log-sources/pubsub

> create pub/sub source

```json
{"openapi":"3.0.3","info":{"title":"Panther REST API","version":"1.0"},"tags":[{"name":"pub/sub source","description":"The Pub/Sub source API handles all operations for GCP Pub/Sub log sources"}],"servers":[{"url":"https://{api_host}","variables":{"api_host":{"default":"your-api-host"}}}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","name":"X-API-Key","in":"header"}},"schemas":{"PubSubSourceAPI.ModifyPubSubSource":{"type":"object","properties":{"credentials":{"type":"string","description":"The GCP credentials JSON content (service account key or WIF config). Required on create, optional on update."},"credentialsType":{"type":"string","description":"The type of credentials being used: service_account or wif (Workload Identity Federation).","enum":["service_account","wif"]},"integrationLabel":{"type":"string","description":"The integration label (name)"},"logStreamType":{"type":"string","description":"The log stream type. Supported log stream types: Auto, JSON, JsonArray, Lines, XML","enum":["Auto","JSON","JsonArray","Lines","XML"]},"logStreamTypeOptions":{"$ref":"#/components/schemas/PubSubSourceAPI.LogStreamTypeOptions"},"logTypes":{"type":"array","items":{"type":"string"},"description":"The log types for parsing ingested data"},"projectId":{"type":"string","description":"The GCP project ID. Optional for service_account credentials (derived from the keyfile). Required for WIF."},"regionalEndpoint":{"type":"string","description":"Optional regional endpoint override (e.g. europe-west3). If not set, the global endpoint is used."},"subscriptionId":{"type":"string","description":"The GCP Pub/Sub subscription ID"}},"required":["integrationLabel","subscriptionId","logTypes","logStreamType","credentialsType"]},"PubSubSourceAPI.LogStreamTypeOptions":{"type":"object","properties":{"jsonArrayEnvelopeField":{"type":"string","description":"Path to the array value to extract elements from, only applicable if logStreamType is JsonArray. Leave empty if the input JSON is an array itself"},"xmlRootElement":{"type":"string","description":"The root element name for XML streams, only applicable if logStreamType is XML. Leave empty if the XML events are not enclosed in a root element"}}},"PubSubSourceAPI.PubSubSource":{"type":"object","properties":{"credentials":{"type":"string","description":"The GCP credentials JSON content (service account key or WIF config). Required on create, optional on update."},"credentialsType":{"type":"string","description":"The type of credentials being used: service_account or wif (Workload Identity Federation).","enum":["service_account","wif"]},"integrationId":{"type":"string","description":"The id of the pubsub source"},"integrationLabel":{"type":"string","description":"The integration label (name)"},"logStreamType":{"type":"string","description":"The log stream type. Supported log stream types: Auto, JSON, JsonArray, Lines, XML","enum":["Auto","JSON","JsonArray","Lines","XML"]},"logStreamTypeOptions":{"$ref":"#/components/schemas/PubSubSourceAPI.LogStreamTypeOptions"},"logTypes":{"type":"array","items":{"type":"string"},"description":"The log types for parsing ingested data"},"projectId":{"type":"string","description":"The GCP project ID. Optional for service_account credentials (derived from the keyfile). Required for WIF."},"regionalEndpoint":{"type":"string","description":"Optional regional endpoint override (e.g. europe-west3). If not set, the global endpoint is used."},"subscriptionId":{"type":"string","description":"The GCP Pub/Sub subscription ID"}}},"PubSubSourceAPI.BadRequestError":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"PubSubSourceAPI.ExistsError":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"PubSubSourceAPI.ServiceError":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"paths":{"/log-sources/pubsub":{"post":{"tags":["pub/sub source"],"summary":"create pub/sub source","operationId":"pub/sub source#create","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.ModifyPubSubSource"}}}},"responses":{"201":{"description":"Created response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.PubSubSource"}}}},"400":{"description":"bad_request: Bad Request response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.BadRequestError"}}}},"409":{"description":"exists: Conflict response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.ExistsError"}}}},"500":{"description":"service: Internal Server Error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.ServiceError"}}}}}}}}}
```

## GET /log-sources/pubsub/{id}

> get pub/sub source

```json
{"openapi":"3.0.3","info":{"title":"Panther REST API","version":"1.0"},"tags":[{"name":"pub/sub source","description":"The Pub/Sub source API handles all operations for GCP Pub/Sub log sources"}],"servers":[{"url":"https://{api_host}","variables":{"api_host":{"default":"your-api-host"}}}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","name":"X-API-Key","in":"header"}},"schemas":{"PubSubSourceAPI.PubSubSource":{"type":"object","properties":{"credentials":{"type":"string","description":"The GCP credentials JSON content (service account key or WIF config). Required on create, optional on update."},"credentialsType":{"type":"string","description":"The type of credentials being used: service_account or wif (Workload Identity Federation).","enum":["service_account","wif"]},"integrationId":{"type":"string","description":"The id of the pubsub source"},"integrationLabel":{"type":"string","description":"The integration label (name)"},"logStreamType":{"type":"string","description":"The log stream type. Supported log stream types: Auto, JSON, JsonArray, Lines, XML","enum":["Auto","JSON","JsonArray","Lines","XML"]},"logStreamTypeOptions":{"$ref":"#/components/schemas/PubSubSourceAPI.LogStreamTypeOptions"},"logTypes":{"type":"array","items":{"type":"string"},"description":"The log types for parsing ingested data"},"projectId":{"type":"string","description":"The GCP project ID. Optional for service_account credentials (derived from the keyfile). Required for WIF."},"regionalEndpoint":{"type":"string","description":"Optional regional endpoint override (e.g. europe-west3). If not set, the global endpoint is used."},"subscriptionId":{"type":"string","description":"The GCP Pub/Sub subscription ID"}}},"PubSubSourceAPI.LogStreamTypeOptions":{"type":"object","properties":{"jsonArrayEnvelopeField":{"type":"string","description":"Path to the array value to extract elements from, only applicable if logStreamType is JsonArray. Leave empty if the input JSON is an array itself"},"xmlRootElement":{"type":"string","description":"The root element name for XML streams, only applicable if logStreamType is XML. Leave empty if the XML events are not enclosed in a root element"}}},"PubSubSourceAPI.BadRequestError":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"PubSubSourceAPI.NotFoundError":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"PubSubSourceAPI.ServiceError":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"paths":{"/log-sources/pubsub/{id}":{"get":{"tags":["pub/sub source"],"summary":"get pub/sub source","operationId":"pub/sub source#get","parameters":[{"name":"id","in":"path","description":"ID of the pubsub source to fetch","required":true,"schema":{"type":"string","description":"ID of the pubsub source to fetch"}}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.PubSubSource"}}}},"400":{"description":"bad_request: Bad Request response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.BadRequestError"}}}},"404":{"description":"not_found: Not Found response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.NotFoundError"}}}},"500":{"description":"service: Internal Server Error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.ServiceError"}}}}}}}}}
```

## DELETE /log-sources/pubsub/{id}

> delete pub/sub source

```json
{"openapi":"3.0.3","info":{"title":"Panther REST API","version":"1.0"},"tags":[{"name":"pub/sub source","description":"The Pub/Sub source API handles all operations for GCP Pub/Sub log sources"}],"servers":[{"url":"https://{api_host}","variables":{"api_host":{"default":"your-api-host"}}}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","name":"X-API-Key","in":"header"}},"schemas":{"PubSubSourceAPI.BadRequestError":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"PubSubSourceAPI.ServiceError":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}},"paths":{"/log-sources/pubsub/{id}":{"delete":{"tags":["pub/sub source"],"summary":"delete pub/sub source","operationId":"pub/sub source#delete","parameters":[{"name":"id","in":"path","description":"ID of the pubsub source to delete","required":true,"schema":{"type":"string","description":"ID of the pubsub source to delete"}}],"responses":{"204":{"description":"No Content response."},"400":{"description":"bad_request: Bad Request response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.BadRequestError"}}}},"500":{"description":"service: Internal Server Error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PubSubSourceAPI.ServiceError"}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.panther.com/ko/panther/api/rest/log-sources/pubsub-sources.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
