{"meta":{"title":"보안 캠페인에 대한 REST API 엔드포인트","intro":"REST API를 사용하여 조직에 대한 보안 캠페인을 만들고 관리합니다.","product":"REST API","breadcrumbs":[{"href":"/ko/rest","title":"REST API"},{"href":"/ko/rest/campaigns","title":"캠페인"},{"href":"/ko/rest/campaigns/campaigns","title":"보안 캠페인"}],"documentType":"article"},"body":"# 보안 캠페인에 대한 REST API 엔드포인트\n\nREST API를 사용하여 조직에 대한 보안 캠페인을 만들고 관리합니다.\n\n> [!NOTE]\n> 이 엔드포인트는 게시된 캠페인과만 상호 작용합니다. 초안 캠페인은 현재 API를 통해 보거나 관리할 수 없습니다.\n\n> [!NOTE]\n> Most endpoints use `Authorization: Bearer <YOUR-TOKEN>` and `Accept: application/vnd.github+json` headers, plus `X-GitHub-Api-Version: 2026-03-10`. Curl examples below omit these standard headers for brevity.\n\n## List campaigns for an organization\n\n```\nGET /orgs/{org}/campaigns\n```\n\nLists campaigns in an organization.\nThe authenticated user must be an owner or security manager for the organization to use this endpoint.\nOAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint.\n\n### Parameters\n\n#### Headers\n\n- **`accept`** (string)\n  Setting to `application/vnd.github+json` is recommended.\n\n#### Path and query parameters\n\n- **`org`** (string) (required)\n  The organization name. The name is not case sensitive.\n\n- **`page`** (integer)\n  The page number of the results to fetch. For more information, see \"Using pagination in the REST API.\"\n  Default: `1`\n\n- **`per_page`** (integer)\n  The number of results per page (max 100). For more information, see \"Using pagination in the REST API.\"\n  Default: `30`\n\n- **`direction`** (string)\n  The direction to sort the results by.\n  Default: `desc`\n  Can be one of: `asc`, `desc`\n\n- **`state`** (string)\n  If specified, only campaigns with this state will be returned.\n  Can be one of: `open`, `closed`\n\n- **`sort`** (string)\n  The property by which to sort the results.\n  Default: `created`\n  Can be one of: `created`, `updated`, `ends_at`, `published`\n\n### HTTP response status codes\n\n- **200** - OK\n\n- **404** - Resource not found\n\n- **503** - Service unavailable\n\n### Code examples\n\n#### Example\n\n**Request:**\n\n```curl\ncurl -L \\\n  -X GET \\\n  https://api.github.com/orgs/ORG/campaigns\n```\n\n**Response schema (Status: 200):**\n\nArray of `Campaign summary`:\n  * `number`: required, integer\n  * `created_at`: required, string, format: date-time\n  * `updated_at`: required, string, format: date-time\n  * `name`: string\n  * `description`: required, string\n  * `managers`: required, array of `Simple User`:\n    * `name`: string or null\n    * `email`: string or null\n    * `login`: required, string\n    * `id`: required, integer, format: int64\n    * `node_id`: required, string\n    * `avatar_url`: required, string, format: uri\n    * `gravatar_id`: required, string or null\n    * `url`: required, string, format: uri\n    * `html_url`: required, string, format: uri\n    * `followers_url`: required, string, format: uri\n    * `following_url`: required, string\n    * `gists_url`: required, string\n    * `starred_url`: required, string\n    * `subscriptions_url`: required, string, format: uri\n    * `organizations_url`: required, string, format: uri\n    * `repos_url`: required, string, format: uri\n    * `events_url`: required, string\n    * `received_events_url`: required, string, format: uri\n    * `type`: required, string\n    * `site_admin`: required, boolean\n    * `starred_at`: string\n    * `user_view_type`: string\n  * `team_managers`: array of `Team`:\n    * `id`: required, integer\n    * `node_id`: required, string\n    * `name`: required, string\n    * `slug`: required, string\n    * `description`: required, string or null\n    * `privacy`: string\n    * `notification_setting`: string\n    * `permission`: required, string\n    * `permissions`: object:\n      * `pull`: required, boolean\n      * `triage`: required, boolean\n      * `push`: required, boolean\n      * `maintain`: required, boolean\n      * `admin`: required, boolean\n    * `url`: required, string, format: uri\n    * `html_url`: required, string, format: uri\n    * `members_url`: required, string\n    * `repositories_url`: required, string, format: uri\n    * `type`: required, string, enum: `enterprise`, `organization`\n    * `access_source`: string, enum: `direct`, `organization`, `enterprise`\n    * `organization_id`: integer\n    * `enterprise_id`: integer\n    * `parent`: required, any of:\n      * **null**\n      * **Team Simple**\n        * `id`: required, integer\n        * `node_id`: required, string\n        * `url`: required, string, format: uri\n        * `members_url`: required, string\n        * `name`: required, string\n        * `description`: required, string or null\n        * `permission`: required, string\n        * `privacy`: string\n        * `notification_setting`: string\n        * `html_url`: required, string, format: uri\n        * `repositories_url`: required, string, format: uri\n        * `slug`: required, string\n        * `ldap_dn`: string\n        * `type`: required, string, enum: `enterprise`, `organization`\n        * `organization_id`: integer\n        * `enterprise_id`: integer\n  * `published_at`: string, format: date-time\n  * `ends_at`: required, string, format: date-time\n  * `closed_at`: string or null, format: date-time\n  * `state`: required, string, enum: `open`, `closed`\n  * `contact_link`: required, string or null, format: uri\n  * `alert_stats`: object:\n    * `open_count`: required, integer\n    * `closed_count`: required, integer\n    * `in_progress_count`: required, integer\n\n## Create a campaign for an organization\n\n```\nPOST /orgs/{org}/campaigns\n```\n\nCreate a campaign for an organization.\nThe authenticated user must be an owner or security manager for the organization to use this endpoint.\nOAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint.\nFine-grained tokens must have the \"Code scanning alerts\" repository permissions (read) on all repositories included\nin the campaign.\n\n### Parameters\n\n#### Headers\n\n- **`accept`** (string)\n  Setting to `application/vnd.github+json` is recommended.\n\n#### Path and query parameters\n\n- **`org`** (string) (required)\n  The organization name. The name is not case sensitive.\n\n### HTTP response status codes\n\n- **200** - OK\n\n- **400** - Bad Request\n\n- **404** - Resource not found\n\n- **422** - Unprocessable Entity\n\n- **429** - Too Many Requests\n\n- **503** - Service unavailable\n\n### Code examples\n\n#### Example\n\n**Request:**\n\n```curl\ncurl -L \\\n  -X POST \\\n  https://api.github.com/orgs/ORG/campaigns \\\n  -d '{\n  \"name\": \"Critical CodeQL alerts\",\n  \"description\": \"Address critical alerts before they are exploited to prevent breaches, protect sensitive data, and mitigate financial and reputational damage.\",\n  \"managers\": [\n    \"octocat\"\n  ],\n  \"ends_at\": \"2024-03-14T00:00:00Z\",\n  \"code_scanning_alerts\": [\n    {\n      \"repository_id\": 1296269,\n      \"alert_numbers\": [\n        1,\n        2\n      ]\n    }\n  ]\n}'\n```\n\n**Response schema (Status: 200):**\n\n* `number`: required, integer\n* `created_at`: required, string, format: date-time\n* `updated_at`: required, string, format: date-time\n* `name`: string\n* `description`: required, string\n* `managers`: required, array of `Simple User`:\n  * `name`: string or null\n  * `email`: string or null\n  * `login`: required, string\n  * `id`: required, integer, format: int64\n  * `node_id`: required, string\n  * `avatar_url`: required, string, format: uri\n  * `gravatar_id`: required, string or null\n  * `url`: required, string, format: uri\n  * `html_url`: required, string, format: uri\n  * `followers_url`: required, string, format: uri\n  * `following_url`: required, string\n  * `gists_url`: required, string\n  * `starred_url`: required, string\n  * `subscriptions_url`: required, string, format: uri\n  * `organizations_url`: required, string, format: uri\n  * `repos_url`: required, string, format: uri\n  * `events_url`: required, string\n  * `received_events_url`: required, string, format: uri\n  * `type`: required, string\n  * `site_admin`: required, boolean\n  * `starred_at`: string\n  * `user_view_type`: string\n* `team_managers`: array of `Team`:\n  * `id`: required, integer\n  * `node_id`: required, string\n  * `name`: required, string\n  * `slug`: required, string\n  * `description`: required, string or null\n  * `privacy`: string\n  * `notification_setting`: string\n  * `permission`: required, string\n  * `permissions`: object:\n    * `pull`: required, boolean\n    * `triage`: required, boolean\n    * `push`: required, boolean\n    * `maintain`: required, boolean\n    * `admin`: required, boolean\n  * `url`: required, string, format: uri\n  * `html_url`: required, string, format: uri\n  * `members_url`: required, string\n  * `repositories_url`: required, string, format: uri\n  * `type`: required, string, enum: `enterprise`, `organization`\n  * `access_source`: string, enum: `direct`, `organization`, `enterprise`\n  * `organization_id`: integer\n  * `enterprise_id`: integer\n  * `parent`: required, any of:\n    * **null**\n    * **Team Simple**\n      * `id`: required, integer\n      * `node_id`: required, string\n      * `url`: required, string, format: uri\n      * `members_url`: required, string\n      * `name`: required, string\n      * `description`: required, string or null\n      * `permission`: required, string\n      * `privacy`: string\n      * `notification_setting`: string\n      * `html_url`: required, string, format: uri\n      * `repositories_url`: required, string, format: uri\n      * `slug`: required, string\n      * `ldap_dn`: string\n      * `type`: required, string, enum: `enterprise`, `organization`\n      * `organization_id`: integer\n      * `enterprise_id`: integer\n* `published_at`: string, format: date-time\n* `ends_at`: required, string, format: date-time\n* `closed_at`: string or null, format: date-time\n* `state`: required, string, enum: `open`, `closed`\n* `contact_link`: required, string or null, format: uri\n* `alert_stats`: object:\n  * `open_count`: required, integer\n  * `closed_count`: required, integer\n  * `in_progress_count`: required, integer\n\n## Get a campaign for an organization\n\n```\nGET /orgs/{org}/campaigns/{campaign_number}\n```\n\nGets a campaign for an organization.\nThe authenticated user must be an owner or security manager for the organization to use this endpoint.\nOAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint.\n\n### Parameters\n\n#### Headers\n\n- **`accept`** (string)\n  Setting to `application/vnd.github+json` is recommended.\n\n#### Path and query parameters\n\n- **`org`** (string) (required)\n  The organization name. The name is not case sensitive.\n\n- **`campaign_number`** (integer) (required)\n  The campaign number.\n\n### HTTP response status codes\n\n- **200** - OK\n\n- **404** - Resource not found\n\n- **422** - Unprocessable Entity\n\n- **503** - Service unavailable\n\n### Code examples\n\n#### Example\n\n**Request:**\n\n```curl\ncurl -L \\\n  -X GET \\\n  https://api.github.com/orgs/ORG/campaigns/CAMPAIGN_NUMBER\n```\n\n**Response schema (Status: 200):**\n\nSame response schema as [Create a campaign for an organization](#create-a-campaign-for-an-organization).\n\n## Update a campaign\n\n```\nPATCH /orgs/{org}/campaigns/{campaign_number}\n```\n\nUpdates a campaign in an organization.\nThe authenticated user must be an owner or security manager for the organization to use this endpoint.\nOAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint.\n\n### Parameters\n\n#### Headers\n\n- **`accept`** (string)\n  Setting to `application/vnd.github+json` is recommended.\n\n#### Path and query parameters\n\n- **`org`** (string) (required)\n  The organization name. The name is not case sensitive.\n\n- **`campaign_number`** (integer) (required)\n  The campaign number.\n\n#### Body parameters\n\n- **`name`** (string)\n  The name of the campaign\n\n- **`description`** (string)\n  A description for the campaign\n\n- **`managers`** (array of strings)\n  The logins of the users to set as the campaign managers. At this time, only a single manager can be supplied.\n\n- **`team_managers`** (array of strings)\n  The slugs of the teams to set as the campaign managers.\n\n- **`ends_at`** (string)\n  The end date and time of the campaign, in ISO 8601 format':' YYYY-MM-DDTHH:MM:SSZ.\n\n- **`contact_link`** (string or null)\n  The contact link of the campaign. Must be a URI.\n\n- **`state`** (string)\n  Indicates whether a campaign is open or closed\n  Can be one of: `open`, `closed`\n\n### HTTP response status codes\n\n- **200** - OK\n\n- **400** - Bad Request\n\n- **404** - Resource not found\n\n- **422** - Unprocessable Entity\n\n- **503** - Service unavailable\n\n### Code examples\n\n#### Example\n\n**Request:**\n\n```curl\ncurl -L \\\n  -X PATCH \\\n  https://api.github.com/orgs/ORG/campaigns/CAMPAIGN_NUMBER \\\n  -d '{\n  \"name\": \"Critical CodeQL alerts\"\n}'\n```\n\n**Response schema (Status: 200):**\n\nSame response schema as [Create a campaign for an organization](#create-a-campaign-for-an-organization).\n\n## Delete a campaign for an organization\n\n```\nDELETE /orgs/{org}/campaigns/{campaign_number}\n```\n\nDeletes a campaign in an organization.\nThe authenticated user must be an owner or security manager for the organization to use this endpoint.\nOAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint.\n\n### Parameters\n\n#### Headers\n\n- **`accept`** (string)\n  Setting to `application/vnd.github+json` is recommended.\n\n#### Path and query parameters\n\n- **`org`** (string) (required)\n  The organization name. The name is not case sensitive.\n\n- **`campaign_number`** (integer) (required)\n  The campaign number.\n\n### HTTP response status codes\n\n- **204** - Deletion successful\n\n- **404** - Resource not found\n\n- **503** - Service unavailable\n\n### Code examples\n\n#### Example\n\n**Request:**\n\n```curl\ncurl -L \\\n  -X DELETE \\\n  https://api.github.com/orgs/ORG/campaigns/CAMPAIGN_NUMBER\n```\n\n**Response schema (Status: 204):**"}