CINXE.COM

api - GitHub Changelog

<!doctype html> <html lang="en-US" class="mt-0"> <head> <meta charset="UTF-8"><script type="text/javascript">(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"229f494c49",applicationID:"177966165"};;/*! For license information please see nr-loader-rum-1.285.0.min.js.LICENSE.txt */ (()=>{var e,t,r={8122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(8122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},5217:(e,t,r)=>{"use strict";r.d(t,{D0:()=>m,gD:()=>v,xN:()=>h});r(860).K7.genericEvents;const n="experimental.marks",i="experimental.measures",o="experimental.resources",a=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var s=r(2614),c=r(944),u=r(384),l=r(8122);const d="[data-nr-mask]",f=()=>{const e={feature_flags:[],experimental:{marks:!1,measures:!1,resources:!1},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{get capture_marks(){return e.feature_flags.includes(n)||e.experimental.marks},set capture_marks(t){e.experimental.marks=t},get capture_measures(){return e.feature_flags.includes(i)||e.experimental.measures},set capture_measures(t){e.experimental.measures=t},capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:s.wk,inactiveMs:s.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){a(t)?e.mask_selector="".concat(t,",").concat(d):""===t||null===t?e.mask_selector=d:(0,c.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){a(t)?e.block_selector+=",".concat(t):""!==t&&(0,c.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,c.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},spa:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]}}},g={},p="All configuration objects require an agent identifier!";function m(e){if(!e)throw new Error(p);if(!g[e])throw new Error("Configuration for ".concat(e," was never set"));return g[e]}function h(e,t){if(!e)throw new Error(p);g[e]=(0,l.a)(t,f());const r=(0,u.nY)(e);r&&(r.init=g[e])}function v(e,t){if(!e)throw new Error(p);var r=m(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},3371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>d});var n=r(8122),i=r(384),o=r(6154),a=r(9324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0,harvester:void 0},l={};function d(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!l[e])throw new Error("Runtime for ".concat(e," was never set"));return l[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");l[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(l[e],"harvestCount")||Object.defineProperty(l[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=l[e])}},9324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,xv:()=>n});const n="1.285.0",i="PROD",o="CDN"},6154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>c,RI:()=>i,WN:()=>l,bv:()=>o,gm:()=>a,mw:()=>s,sb:()=>u});var n=r(1863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s=Boolean("hidden"===a?.document?.visibilityState),c=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=c&&"undefined"==typeof SharedWorker,l=((()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)())},3241:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(6154);const i="newrelic";function o(e={}){try{n.gm.dispatchEvent(new CustomEvent(i,{detail:e}))}catch(e){}}},1687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>d,x3:()=>u});var n=r(7836),i=r(3606),o=r(860),a=r(2646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};l(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),g(e,t,!1),s[e].size&&f(e))}function l(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function d(e="",t="feature",r=!1){if(l(e),!e||!s[e].get(t)||r)return g(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),g(e,t)})))}function g(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},7836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(8990),o=r(3371),a=r(2646),s=r(5607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},l={},d=!1;try{d=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=g(n),c=m(e),l=c.length,d=0;d<l;d++)c[d].apply(a,r);var p=v()[s[e]];p&&p.push([f,e,r,a]);return a},get:h,listeners:m,context:g,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:d?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:d};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=m(e).concat(t)}function m(e){return n[e]||[]}function h(t){return l[t]=l[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),l=(0,n.Zm)();l.ee||(l.ee=u)},2646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(9908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},5607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(9566).bz)()},9566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(6154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}},2614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},1863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},5701:(e,t,r)=>{"use strict";r.d(t,{B:()=>a,t:()=>s});var n=r(7836),i=r(3241);const o=new Set,a={};function s(e,t){const r=n.ee.get(t);a[t]??={},e&&"object"==typeof e&&(o.has(t)||(r.emit("rumresp",[e]),a[t]=e,o.add(t),(0,i.W)({agentIdentifier:t,loaded:!0,type:"lifecycle",name:"load",feature:void 0,data:e})))}},8990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},5289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(3878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>l,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>d});var n=r(6154),i=r(1863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function l(e,t){a()[e]=t}function d(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},2843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},3434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(7836),i=r(5607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];l(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return l(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,l,d;try{a=this,o=[...arguments],l="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],l],e)}i(r+"start",[o,a,s],l,c);try{return d=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],l,c),e}finally{i(r+"end",[o,a,d],l,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},993:(e,t,r)=>{"use strict";r.d(t,{A$:()=>o,ET:()=>a,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o={OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},a="log";n.K7.logging},8154:(e,t,r)=>{"use strict";r.d(t,{z_:()=>o,XG:()=>s,TZ:()=>n,rs:()=>i,xV:()=>a});r(6154),r(9566),r(384);const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},6630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},6344:(e,t,r)=>{"use strict";r.d(t,{G4:()=>i});var n=r(2614);r(860).K7.sessionReplay;const i={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"};n.g.ERROR,n.g.FULL,n.g.OFF},4234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(7836),i=r(1687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},7603:(e,t,r)=>{"use strict";r.d(t,{j:()=>V});var n=r(860),i=r(2555),o=r(3371),a=r(9908),s=r(7836),c=r(1687),u=r(5289),l=r(6154),d=r(944),f=r(8154),g=r(384),p=r(6344);const m=["setErrorHandler","finished","addToTrace","addRelease","recordCustomEvent","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],h=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(1863),b=r(2614),y=r(993);var w=r(2646),R=r(3434);const A=new Map;function E(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,d.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,R.YM)(i),a=new w.y(s.P);a.level=n.level,a.customAttributes=n.customAttributes;const c=t[r]?.[R.Jt]||t[r];return A.set(c,a),o.inPlace(t,[r],"wrap-logger-",(()=>A.get(c))),i}var _=r(3241),x=r(5701);function N(){const e=(0,g.pV)();m.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,d.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const k={};function I(e,t,g=!1){t||(0,c.Ak)(e,"api");const m={};var w=s.ee.get(e),R=w.get("tracer");k[e]=b.g.OFF,w.on(p.G4.REPLAY_RUNNING,(t=>{k[e]=t}));var A="api-",N=A+"ixn-";function I(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),S(A,n,!0,o||null===r?"session":void 0)(t,r)}function T(){}m.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,w),function(e,t,r={},i=y.p_.INFO){(0,a.p)(f.xV,["API/logging/".concat(i.toLowerCase(),"/called")],void 0,n.K7.metrics,e),(0,a.p)(y.ET,[(0,v.t)(),t,r,i],void 0,n.K7.logging,e)}(w,e,t,r)},m.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,w),E(w,e,t,{customAttributes:r,level:i})},h.forEach((e=>{m[e]=S(A,e,!0,"api")})),m.addPageAction=S(A,"addPageAction",!0,n.K7.genericEvents),m.recordCustomEvent=S(A,"recordCustomEvent",!0,n.K7.genericEvents),m.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,S(A,"setPageViewName",!0)()},m.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return I(e,t,"setCustomAttribute",r);(0,d.R)(40,typeof t)}else(0,d.R)(39,typeof e)},m.setUserId=function(e){if("string"==typeof e||null===e)return I("enduser.id",e,"setUserId",!0);(0,d.R)(41,typeof e)},m.setApplicationVersion=function(e){if("string"==typeof e||null===e)return I("application.version",e,"setApplicationVersion",!1);(0,d.R)(42,typeof e)},m.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,w),w.emit("manual-start-all")}catch(e){(0,d.R)(23,e)}},m[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,w)},m[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,w)},m.interaction=function(e){return(new T).get("object"==typeof e?e:{})};const j=T.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,w),g||(0,a.p)(N+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,w),function(){if(R.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw R.emit("fn-err",[arguments,this,t],r),t}finally{R.emit("fn-end",[(0,v.t)()],r)}}}};function S(t,r,i,o){return function(){return(0,a.p)(f.xV,["API/"+r+"/called"],void 0,n.K7.metrics,w),(0,_.W)({agentIdentifier:e,loaded:!!x.B?.[e],type:"data",name:"api",feature:t+r,data:{notSpa:i,bufferGroup:o}}),o&&(0,a.p)(t+r,[i?(0,v.t)():performance.now(),...arguments],i?null:this,o,w),i?void 0:this}}function O(){r.e(296).then(r.bind(r,8778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,d.R)(27,e),w.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{j[e]=S(N,e,void 0,g?n.K7.softNav:n.K7.spa)})),m.setCurrentRouteName=g?S(N,"routeName",void 0,n.K7.softNav):S(A,"routeName",!0,n.K7.spa),m.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,w),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!k[e]],void 0,n.K7.jserrors,w)},l.RI?(0,u.GG)((()=>O()),!0):O(),m}var T=r(5217),j=r(8122);const S={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},O={};const P=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let K=!1;function V(e,t={},r,n){let{init:a,info:c,loader_config:u,runtime:d={},exposed:f=!0}=t;d.loaderType=r;const p=(0,g.pV)();c||(a=p.init,c=p.info,u=p.loader_config),(0,T.xN)(e.agentIdentifier,a||{}),function(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");O[e]=(0,j.a)(t,S);const r=(0,g.nY)(e);r&&(r.loader_config=O[e])}(e.agentIdentifier,u||{}),c.jsAttributes??={},l.bv&&(c.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,c);const m=(0,T.D0)(e.agentIdentifier),h=[c.beacon,c.errorBeacon];K||(m.proxy.assets&&(P(m.proxy.assets),h.push(m.proxy.assets)),m.proxy.beacon&&h.push(m.proxy.beacon),N(),(0,g.US)("activatedFeatures",x.B),e.runSoftNavOverSpa&&=!0===m.soft_navigations.enabled&&m.feature_flags.includes("soft_nav")),d.denyList=[...m.ajax.deny_list||[],...m.ajax.block_internal?h:[]],d.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,d),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=I(e.agentIdentifier,n,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=f),K||(0,_.W)({agentIdentifier:e.agentIdentifier,loaded:!!x.B?.[e.agentIdentifier],type:"lifecycle",name:"initialize",feature:void 0,data:{init:m,info:c,loader_config:u,runtime:d}}),K=!0}},8374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>l,K7:()=>c,P3:()=>u,XX:()=>i,Yy:()=>s,df:()=>o,qY:()=>n,v4:()=>a});const n="events",i="jserrors",o="browser/blobs",a="rum",s="browser/logs",c={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},u={[c.pageViewEvent]:1,[c.pageViewTiming]:2,[c.metrics]:3,[c.jserrors]:4,[c.spa]:5,[c.ajax]:6,[c.sessionTrace]:7,[c.softNav]:8,[c.sessionReplay]:9,[c.logging]:10,[c.genericEvents]:11},l={[c.pageViewEvent]:a,[c.pageViewTiming]:n,[c.ajax]:n,[c.spa]:n,[c.softNav]:n,[c.metrics]:i,[c.jserrors]:i,[c.sessionTrace]:o,[c.sessionReplay]:o,[c.logging]:s,[c.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>"nr-rum-1.285.0.min.js",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.285.0.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),l=0;l<u.length;l++){var d=u[l];if(d.getAttribute("src")==r||d.getAttribute("data-webpack")==t+o){s=d;break}}if(!s){c=!0;var f={296:"sha512-Aa+vt/G+VUnXF5imJD27xfBbG00pJRbxEVq24dgn/KfPYsDLKETEMkS7ezrIti3e/7t6va9a0PBrFlxSB0FCeA=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var g=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(g.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=g.bind(null,s.onerror),s.onload=g.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={374:0,840:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.285.0.PROD"]=self["webpackChunk:NRBA-1.285.0.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(8374);var e=i(944),t=i(6344),r=i(9566);class n{agentIdentifier;constructor(){this.agentIdentifier=(0,r.LA)(16)}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}recordCustomEvent(e,t){return this.#e("recordCustomEvent",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(5217);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var l=i(7603);var d=i(1687),f=i(4234),g=i(5289),p=i(6154),m=i(384);const h=e=>p.RI&&!0===(0,s.gD)(e,"privacy.cookies_enabled");function v(e){return!!(0,m.dV)().o.MO&&h(e)&&!0===(0,s.gD)(e,"session_trace.enabled")}var b=i(6389);class y extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,d.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,b.J)((()=>{(0,d.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if(h(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(296).then(i.bind(i,3861));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(!this.#t(this.featureName,o))return(0,d.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(296).then(i.bind(i,6103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),t.runtime.harvester.initializedAggregates.push(this.featAggregate),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,d.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,g.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return v(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var w=i(6630);class R extends y{static featureName=w.T;constructor(e,t=!0){super(e,w.T,t),this.importAggregator(e)}}var A=i(9908),E=i(2843),_=i(3878),x=i(782),N=i(1863);class k extends y{static featureName=x.T;constructor(e,t=!0){super(e,x.T,t),p.RI&&((0,E.u)((()=>(0,A.p)("docHidden",[(0,N.t)()],void 0,x.T,this.ee)),!0),(0,_.sp)("pagehide",(()=>(0,A.p)("winPagehide",[(0,N.t)()],void 0,x.T,this.ee))),this.importAggregator(e))}}var I=i(8154);class T extends y{static featureName=I.TZ;constructor(e,t=!0){super(e,I.TZ,t),p.RI&&document.addEventListener("securitypolicyviolation",(e=>{(0,A.p)(I.xV,["Generic/CSPViolation/Detected"],void 0,this.featureName,this.ee)})),this.importAggregator(e)}}new class extends o{constructor(t){super(),p.gm?(this.features={},(0,m.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(R),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,l.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,m.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[R,k,T],loaderType:"lite"})})()})();</script> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="profile" href="https://gmpg.org/xfn/11"> <link rel="icon" type="image/x-icon" href="https://github.githubassets.com/favicon.ico"> <meta name='robots' content='noindex, follow' /> <style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style> <!-- This site is optimized with the Yoast SEO Premium plugin v24.5 (Yoast SEO v24.5) - https://yoast.com/wordpress/plugins/seo/ --> <title>api - GitHub Changelog</title> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="article" /> <meta property="og:title" content="api · GitHub Changelog" /> <meta property="og:url" content="https://github.blog/changelog/label/api/" /> <meta property="og:site_name" content="The GitHub Blog" /> <meta name="twitter:card" content="summary_large_image" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"https://github.blog/changelog/label/api/","url":"","name":"api Archives - The GitHub Blog","isPartOf":{"@id":"https://github.blog/#website"},"breadcrumb":{"@id":"#breadcrumb"},"inLanguage":"en-US"},{"@type":"BreadcrumbList","@id":"#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://github.blog/"},{"@type":"ListItem","position":2,"name":"api"}]},{"@type":"WebSite","@id":"https://github.blog/#website","url":"https://github.blog/","name":"The GitHub Blog","description":"Updates, ideas, and inspiration from GitHub to help developers build and design software.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://github.blog/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}</script> <!-- / Yoast SEO Premium plugin. --> <link rel='dns-prefetch' href='//ghcc.githubassets.com' /> <link rel='dns-prefetch' href='//js.monitor.azure.com' /> <link rel='dns-prefetch' href='//analytics.githubassets.com' /> <link rel='dns-prefetch' href='//stats.wp.com' /> <link rel='dns-prefetch' href='//v0.wordpress.com' /> <link rel="alternate" type="application/rss+xml" title="The GitHub Blog &raquo; Feed" href="https://github.blog/feed/" /> <link rel="alternate" type="application/rss+xml" title="The GitHub Blog &raquo; Comments Feed" href="https://github.blog/comments/feed/" /> <link rel="alternate" type="application/rss+xml" title="The GitHub Blog &raquo; api Label Feed" href="https://github.blog/changelog/label/api/feed/" /> <script> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/github.blog\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.7.2"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); </script> <style id='wp-emoji-styles-inline-css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='all-css-2' href='https://github.blog/wp-includes/css/dist/block-library/style.min.css?m=1739294329g' type='text/css' media='all' /> <style id='co-authors-plus-coauthors-style-inline-css'> .wp-block-co-authors-plus-coauthors.is-layout-flow [class*=wp-block-co-authors-plus]{display:inline} </style> <style id='co-authors-plus-avatar-style-inline-css'> .wp-block-co-authors-plus-avatar :where(img){height:auto;max-width:100%;vertical-align:bottom}.wp-block-co-authors-plus-coauthors.is-layout-flow .wp-block-co-authors-plus-avatar :where(img){vertical-align:middle}.wp-block-co-authors-plus-avatar:is(.alignleft,.alignright){display:table}.wp-block-co-authors-plus-avatar.aligncenter{display:table;margin-inline:auto} </style> <style id='co-authors-plus-image-style-inline-css'> .wp-block-co-authors-plus-image{margin-bottom:0}.wp-block-co-authors-plus-image :where(img){height:auto;max-width:100%;vertical-align:bottom}.wp-block-co-authors-plus-coauthors.is-layout-flow .wp-block-co-authors-plus-image :where(img){vertical-align:middle}.wp-block-co-authors-plus-image:is(.alignfull,.alignwide) :where(img){width:100%}.wp-block-co-authors-plus-image:is(.alignleft,.alignright){display:table}.wp-block-co-authors-plus-image.aligncenter{display:table;margin-inline:auto} </style> <style id='safe-svg-svg-icon-style-inline-css'> .safe-svg-cover{text-align:center}.safe-svg-cover .safe-svg-inside{display:inline-block;max-width:100%}.safe-svg-cover svg{height:100%;max-height:100%;max-width:100%;width:100%} </style> <style id='jetpack-sharing-buttons-style-inline-css'> .jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em} </style> <style id='classic-theme-styles-inline-css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <style id='global-styles-inline-css'> :root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} </style> <link rel='stylesheet' id='all-css-20' href='https://github.blog/_static/??/wp-content/plugins/wp-menu-image/assets/css/wmi-front-style.css,/wp-content/themes/github-2021/dist/css/site-script.css?m=1742816940' type='text/css' media='all' /> <link rel="https://api.w.org/" href="https://github.blog/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://github.blog/wp-json/wp/v2/label/1843" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://github.blog/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress 6.7.2" /> <style>img#wpstats{display:none}</style> <meta name="ha-url" content="https://collector.githubapp.com/github-blog/collect"><link rel="preload" href="https://github.blog/wp-content/themes/github-2021/dist/fonts/mona-sans.woff2" as="font" type="font/woff2" crossorigin="anonymous"><link rel="icon" href="https://github.blog/wp-content/uploads/2019/01/cropped-github-favicon-512.png?fit=32%2C32" sizes="32x32" /> <link rel="icon" href="https://github.blog/wp-content/uploads/2019/01/cropped-github-favicon-512.png?fit=192%2C192" sizes="192x192" /> <link rel="apple-touch-icon" href="https://github.blog/wp-content/uploads/2019/01/cropped-github-favicon-512.png?fit=180%2C180" /> <meta name="msapplication-TileImage" content="https://github.blog/wp-content/uploads/2019/01/cropped-github-favicon-512.png?fit=270%2C270" /> </head> <body class="archive tax-changelog-label term-api term-1843 font-mktg hfeed no-sidebar"> <div data-color-mode="dark" data-light-theme="light" data-dark-theme="dark_dimmed" class="pt-header pt-lg-0"> <header id="header" class="header position-fixed position-lg-static pb-lg-header z-4 top-0 left-0 right-0 d-flex flex-column flex-items-stretch color-bg-default"> <a href="#start-of-content" class="p-3 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus"> Skip to content </a> <div class="position-relative container-xl width-full mx-auto p-responsive-blog"> <div class="d-flex flex-items-center flex-justify-between pt-3 pb-3 color-fg-default"> <a href="https://github.com" target="_blank" rel="noreferrer" aria-label="GitHub homepage" class="Header-link position-relative d-flex flex-items-center color-fg-default"> <svg aria-hidden="true" role="presentation" class="nav-back-arrow position-absolute d-block" viewBox="0 0 24 24" width="32" height="32" fill="currentColor"><path fill-rule="evenodd" d="M15.28 5.22a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 000 1.06l6.25 6.25a.75.75 0 101.06-1.06L9.56 12l5.72-5.72a.75.75 0 000-1.06z"></path></svg> <svg aria-hidden="true" role="img" class="octicon octicon-mark-github d-block" viewBox="0 0 16 16" width="32" height="32" fill="currentColor"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg> </a> <span class="d-inline-block ml-2 f1-mktg f2-md-mktg" style="opacity: 0.3;">/</span> <a class="d-inline-block Header-link font-weight-semibold ml-2 f2 color-fg-default" href="https://github.blog/"> Blog</a> <nav class="d-none d-lg-block" aria-label="Secondary navigation"> <ul id="secondary-navigation" class="secondary-navigation flex-items-center flex-nowrap list-style-none ml-4" aria-hidden="false"><li id="menu-item-78809"><a href="https://github.blog/changelog/" class="position-relative d-flex flex-items-center flex-start no-wrap py-2 px-4 f4 lh-condensed-ultra Link--secondary color-fg-default text-medium">Changelog</a></li> <li id="menu-item-78810"><a href="https://docs.github.com/" class="position-relative d-flex flex-items-center flex-start no-wrap py-2 px-4 f4 lh-condensed-ultra Link--secondary color-fg-default text-medium">Docs<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-down position-absolute right-0 d-block ml-1" role="presentation"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li> <li id="menu-item-78811"><a href="https://github.com/customer-stories" class="position-relative d-flex flex-items-center flex-start no-wrap py-2 px-4 f4 lh-condensed-ultra Link--secondary color-fg-default text-medium">Customer stories<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-down position-absolute right-0 d-block ml-1" role="presentation"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li> </ul></nav> <div class="d-none d-lg-flex flex-1"> <form id="desktop-search" class="desktop-search position-relative ml-lg-4 flex-1" action="https://github.blog" method="get" aria-hidden="true" aria-label="Search form" role="search"> <div class="position-relative d-flex flex-1 height-full color-bg-transparent" data-color-mode="light" data-light-theme="light" data-dark-theme="dark" > <input aria-label="Search the blog" type="search" class="p-2 pl-3 pr-6 border-0 rounded-2 flex-1" placeholder="Search the blog…" value="" name="s" id="search-input"> <button type="submit" class="position-absolute right-0 z-3 d-flex flex-items-center flex-justify-center flex-self-center mr-2 p-2 border-0 rounded-2 color-bg-transparent color-fg-subtle" aria-label="Search"> <svg viewBox="0 0 16 16" width="20" height="20" class="octicon octicon-search" role="presentation"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg> </button> </div> </form> <button aria-label="Toggle search" class="flex-self-center ml-auto p-2 border-0 color-bg-transparent color-fg-default rounded-3 js-toggle" aria-controls="desktop-search" aria-expanded="false" > <svg viewBox="0 0 24 24" width="24" height="24" class="octicon octicon-search" role="presentation"><path d="M10.25 2a8.25 8.25 0 0 1 6.34 13.53l5.69 5.69a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-5.69-5.69A8.25 8.25 0 1 1 10.25 2ZM3.5 10.25a6.75 6.75 0 1 0 13.5 0 6.75 6.75 0 0 0-13.5 0Z"></path></svg> <svg viewBox="2 2 20 20" width="24" height="24" class="octicon octicon-x" role="presentation"><path d="M5.72 5.72a.75.75 0 0 1 1.06 0L12 10.94l5.22-5.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L13.06 12l5.22 5.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L12 13.06l-5.22 5.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.94 12 5.72 6.78a.75.75 0 0 1 0-1.06Z"></path></svg> </button> <a class="Button Button--size-medium Button--primary ml-3" href="https://github.com/features/copilot?utm_source=topnav&#038;utm_medium=blog&#038;utm_campaign=copilotfree" target="_blank" data-analytics-click="Blog, click on button, text: Use Copilot for free; ref_location:top nav;" > <span class="Button__text"> <span class="Text Text--200 Text--antialiased Text--weight-semibold Button--label Button--label-medium Button--label-primary"> Use Copilot for free </span> </span> </a> <a class="Button Button--size-medium Button--secondary ml-3" href="https://github.com/enterprise/contact?ref_cta=contact20sales&#038;ref_loc=banner&#038;ref_page=blog" target="_blank" data-analytics-click="Blog, click on button, text: Contact sales; ref_location:top nav;" > <span class="Button__text"> <span class="Text Text--200 Text--antialiased Text--weight-semibold Button--label Button--label-medium Button--label-secondary"> Contact sales </span> </span> </a> </div> <div class="d-flex d-lg-none flex-items-center flex-1 mr-n2"> <button aria-label="Toggle search" class="ml-auto p-2 border-0 color-bg-transparent color-fg-default rounded-3 js-toggle" aria-controls="mobile-search" aria-expanded="false" > <svg viewBox="0 0 24 24" width="24" height="24" class="octicon octicon-search" role="presentation"><path d="M10.25 2a8.25 8.25 0 0 1 6.34 13.53l5.69 5.69a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-5.69-5.69A8.25 8.25 0 1 1 10.25 2ZM3.5 10.25a6.75 6.75 0 1 0 13.5 0 6.75 6.75 0 0 0-13.5 0Z"></path></svg> <svg viewBox="2 2 20 20" width="24" height="24" class="octicon octicon-x" role="presentation"><path d="M5.72 5.72a.75.75 0 0 1 1.06 0L12 10.94l5.22-5.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L13.06 12l5.22 5.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L12 13.06l-5.22 5.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.94 12 5.72 6.78a.75.75 0 0 1 0-1.06Z"></path></svg> </button> <button aria-label="Toggle menu" class="ml-2 p-2 border-0 color-bg-transparent color-fg-default rounded-3 js-toggle" aria-controls="mobile-menu" aria-expanded="false" data-trap-focus="#header"> <svg viewBox="0 0 16 16" width="24" height="24" class="octicon octicon-three-bars" role="presentation"><path d="M1 2.75A.75.75 0 0 1 1.75 2h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 2.75Zm0 5A.75.75 0 0 1 1.75 7h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 7.75ZM1.75 12h12.5a.75.75 0 0 1 0 1.5H1.75a.75.75 0 0 1 0-1.5Z"></path></svg> <svg viewBox="2 2 20 20" width="24" height="24" class="octicon octicon-x " role="presentation"><path d="M5.72 5.72a.75.75 0 0 1 1.06 0L12 10.94l5.22-5.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L13.06 12l5.22 5.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L12 13.06l-5.22 5.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.94 12 5.72 6.78a.75.75 0 0 1 0-1.06Z"></path></svg> </button> </div> </div> </div> <div class="position-relative pb-lg-navigation" data-sticky-navigation=".sticky-navigation"> <nav aria-label="Primary navigation" class="sticky-navigation position-absolute z-4 top-0 left-0 d-none d-lg-block width-full color-border-subtle color-bg-default"> <div class="position-relative container-xl width-full mx-auto p-responsive-blog"> <ul id="primary-navigation" class="primary-navigation position-relative d-flex flex-row flex-nowrap flex-grow-0 flex-justify-between list-style-none"><li id="menu-item-78814"><a href="https://github.blog/ai-and-ml/" class="position-relative d-flex flex-items-center flex-start no-wrap py-3 f4-mktg text-bold js-toggle" aria-controls="primary-78814-dropdown" aria-expanded="false" aria-haspopup="true" role="button">AI &amp; ML<svg viewBox="0 0 16 16" width="16" height="16" class="octicon d-block ml-1 color-fg-muted" role="presentation"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></a> <ul class="dropdown d-flex flex-wrap width-full position-absolute left-0 list-style-none mt-2 rounded-3 z-3 overflow-hidden color-border-subtle" aria-label="AI &amp; ML sub-menu" aria-hidden="true" data-color-mode="light" data-dark-theme="dark" data-light-theme="light" id="primary-78814-dropdown" tabindex="-1"> <li id="menu-item-78863" class="flex-1 p-5 py-xl-7 px-xl-7"><div class="col-9 mb-4 mb-lg-7"><a href="https://github.blog/ai-and-ml/" class="d-flex flex-items-center flex-start f3 lh-condensed color-fg-default text-bold">AI &amp; ML<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right ml-1" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a><p class="mt-1 my-0 f4 color-fg-muted">Learn about artificial intelligence and machine learning across the GitHub ecosystem and the wider industry.</p></div> <ul class="d-flex flex-wrap list-style-none" aria-label="AI &amp; ML sub-menu"> <li id="menu-item-78815" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right"><a href="https://github.blog/ai-and-ml/generative-ai/" class="d-block f4 color-fg-default text-bold">Generative AI</a><p class="mb-0 f5 color-fg-muted">Learn how to build with generative AI.</p></li> <li id="menu-item-78816" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8"><a href="https://github.blog/ai-and-ml/github-copilot/" class="d-block f4 color-fg-default text-bold">GitHub Copilot</a><p class="mb-0 f5 color-fg-muted">Change how you work with GitHub Copilot.</p></li> <li id="menu-item-78817" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right pt-2 pt-lg-4"><a href="https://github.blog/ai-and-ml/llms/" class="d-block f4 color-fg-default text-bold">LLMs</a><p class="mb-0 f5 color-fg-muted">Everything developers need to know about LLMs.</p></li> <li id="menu-item-78818" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8 pt-2 pt-lg-4"><a href="https://github.blog/ai-and-ml/machine-learning/" class="d-block f4 color-fg-default text-bold">Machine learning</a><p class="mb-0 f5 color-fg-muted">Machine learning tips, tricks, and best practices.</p></li> </ul> </li> <li id="menu-item-78864" class="p-5 py-xl-7 px-xl-8 col-4 color-bg-subtle card"><div class="d-block position-relative mb-3 rounded-2 tease-thumbnail overflow-hidden"><img width="800" height="425" src="https://github.blog/wp-content/uploads/2024/06/AI-DarkMode-4.png?resize=800%2C425" class="tease-thumbnail__img d-block width-full height-auto aspect-ratio-1032-548 object-fit-cover" alt="" decoding="async" fetchpriority="high" srcset="https://github.blog/wp-content/uploads/2024/06/AI-DarkMode-4.png?w=300 300w, https://github.blog/wp-content/uploads/2024/06/AI-DarkMode-4.png?w=800 800w, https://github.blog/wp-content/uploads/2024/06/AI-DarkMode-4.png?w=400 400w, https://github.blog/wp-content/uploads/2024/06/AI-DarkMode-4.png?w=1032 1032w, https://github.blog/wp-content/uploads/2024/06/AI-DarkMode-4.png?w=516 516w" sizes="(max-width: 800px) 100vw, 800px" /></div><a href="https://github.blog/ai-and-ml/generative-ai/how-ai-code-generation-works/" class="d-block mb-2 f3 lh-condensed color-fg-default text-bold card__link">How AI code generation works</a><p class="mb-3 f5 color-fg-muted">Explore the capabilities and benefits of AI code generation and how it can improve your developer experience.</p><span class="Link d-inline-flex flex-items-center" role="presentation">Learn more<svg xmlns="http://www.w3.org/2000/svg" class="octicon d-block ml-1" viewBox="0 0 12 12" width="12" height="12"><path d="M4.7 10c-.2 0-.4-.1-.5-.2-.3-.3-.3-.8 0-1.1L6.9 6 4.2 3.3c-.3-.3-.3-.8 0-1.1.3-.3.8-.3 1.1 0l3.3 3.2c.3.3.3.8 0 1.1L5.3 9.7c-.2.2-.4.3-.6.3Z"></path></svg></span></li> </ul> </li> <li id="menu-item-78819"><a href="https://github.blog/developer-skills/" class="position-relative d-flex flex-items-center flex-start no-wrap py-3 f4-mktg text-bold js-toggle" aria-controls="primary-78819-dropdown" aria-expanded="false" aria-haspopup="true" role="button">Developer skills<svg viewBox="0 0 16 16" width="16" height="16" class="octicon d-block ml-1 color-fg-muted" role="presentation"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></a> <ul class="dropdown d-flex flex-wrap width-full position-absolute left-0 list-style-none mt-2 rounded-3 z-3 overflow-hidden color-border-subtle" aria-label="Developer skills sub-menu" aria-hidden="true" data-color-mode="light" data-dark-theme="dark" data-light-theme="light" id="primary-78819-dropdown" tabindex="-1"> <li id="menu-item-78865" class="flex-1 p-5 py-xl-7 px-xl-7"><div class="col-9 mb-4 mb-lg-7"><a href="https://github.blog/developer-skills/" class="d-flex flex-items-center flex-start f3 lh-condensed color-fg-default text-bold">Developer skills<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right ml-1" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a><p class="mt-1 my-0 f4 color-fg-muted">Resources for developers to grow in their skills and careers.</p></div> <ul class="d-flex flex-wrap list-style-none" aria-label="Developer skills sub-menu"> <li id="menu-item-78820" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right"><a href="https://github.blog/developer-skills/application-development/" class="d-block f4 color-fg-default text-bold">Application development</a><p class="mb-0 f5 color-fg-muted">Insights and best practices for building apps.</p></li> <li id="menu-item-78821" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8"><a href="https://github.blog/developer-skills/career-growth/" class="d-block f4 color-fg-default text-bold">Career growth</a><p class="mb-0 f5 color-fg-muted">Tips &amp; tricks to grow as a professional developer.</p></li> <li id="menu-item-78822" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right pt-2 pt-lg-4"><a href="https://github.blog/developer-skills/github/" class="d-block f4 color-fg-default text-bold">GitHub</a><p class="mb-0 f5 color-fg-muted">Improve how you use GitHub at work.</p></li> <li id="menu-item-78823" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8 pt-2 pt-lg-4"><a href="https://github.blog/developer-skills/github-education/" class="d-block f4 color-fg-default text-bold">GitHub Education</a><p class="mb-0 f5 color-fg-muted">Learn how to move into your first professional role.</p></li> <li id="menu-item-78824" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right pt-2 pt-lg-4"><a href="https://github.blog/developer-skills/programming-languages-and-frameworks/" class="d-block f4 color-fg-default text-bold">Programming languages &amp; frameworks</a><p class="mb-0 f5 color-fg-muted">Stay current on what’s new (or new again).</p></li> </ul> </li> <li id="menu-item-78866" class="p-5 py-xl-7 px-xl-8 col-4 color-bg-subtle card"><div class="d-block position-relative mb-3 rounded-2 tease-thumbnail overflow-hidden"><img width="800" height="425" src="https://github.blog/wp-content/uploads/2024/05/Enterprise-DarkMode-3.png?resize=800%2C425" class="tease-thumbnail__img d-block width-full height-auto aspect-ratio-1032-548 object-fit-cover" alt="" decoding="async" srcset="https://github.blog/wp-content/uploads/2024/05/Enterprise-DarkMode-3.png?w=300 300w, https://github.blog/wp-content/uploads/2024/05/Enterprise-DarkMode-3.png?w=800 800w, https://github.blog/wp-content/uploads/2024/05/Enterprise-DarkMode-3.png?w=400 400w, https://github.blog/wp-content/uploads/2024/05/Enterprise-DarkMode-3.png?w=1032 1032w, https://github.blog/wp-content/uploads/2024/05/Enterprise-DarkMode-3.png?w=516 516w" sizes="(max-width: 800px) 100vw, 800px" /></div><a href="https://docs.github.com/en/get-started" class="d-block mb-2 f3 lh-condensed color-fg-default text-bold card__link">Get started with GitHub documentation</a><p class="mb-3 f5 color-fg-muted">Learn how to start building, shipping, and maintaining software with GitHub.</p><span class="Link d-inline-flex flex-items-center" role="presentation">Learn more<svg xmlns="http://www.w3.org/2000/svg" class="octicon d-block ml-1" viewBox="0 0 12 12" width="12" height="12"><path d="M4.7 10c-.2 0-.4-.1-.5-.2-.3-.3-.3-.8 0-1.1L6.9 6 4.2 3.3c-.3-.3-.3-.8 0-1.1.3-.3.8-.3 1.1 0l3.3 3.2c.3.3.3.8 0 1.1L5.3 9.7c-.2.2-.4.3-.6.3Z"></path></svg></span></li> </ul> </li> <li id="menu-item-78825"><a href="https://github.blog/engineering/" class="position-relative d-flex flex-items-center flex-start no-wrap py-3 f4-mktg text-bold js-toggle" aria-controls="primary-78825-dropdown" aria-expanded="false" aria-haspopup="true" role="button">Engineering<svg viewBox="0 0 16 16" width="16" height="16" class="octicon d-block ml-1 color-fg-muted" role="presentation"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></a> <ul class="dropdown d-flex flex-wrap width-full position-absolute left-0 list-style-none mt-2 rounded-3 z-3 overflow-hidden color-border-subtle" aria-label="Engineering sub-menu" aria-hidden="true" data-color-mode="light" data-dark-theme="dark" data-light-theme="light" id="primary-78825-dropdown" tabindex="-1"> <li id="menu-item-78867" class="flex-1 p-5 py-xl-7 px-xl-7"><div class="col-9 mb-4 mb-lg-7"><a href="https://github.blog/engineering/" class="d-flex flex-items-center flex-start f3 lh-condensed color-fg-default text-bold">Engineering<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right ml-1" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a><p class="mt-1 my-0 f4 color-fg-muted">Get an inside look at how we’re building the home for all developers.</p></div> <ul class="d-flex flex-wrap list-style-none" aria-label="Engineering sub-menu"> <li id="menu-item-78827" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right"><a href="https://github.blog/engineering/architecture-optimization/" class="d-block f4 color-fg-default text-bold">Architecture &amp; optimization</a><p class="mb-0 f5 color-fg-muted">Discover how we deliver a performant and highly available experience across the GitHub platform.</p></li> <li id="menu-item-78828" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8"><a href="https://github.blog/engineering/engineering-principles/" class="d-block f4 color-fg-default text-bold">Engineering principles</a><p class="mb-0 f5 color-fg-muted">Explore best practices for building software at scale with a majority remote team.</p></li> <li id="menu-item-78829" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right pt-2 pt-lg-4"><a href="https://github.blog/engineering/infrastructure/" class="d-block f4 color-fg-default text-bold">Infrastructure</a><p class="mb-0 f5 color-fg-muted">Get a glimpse at the technology underlying the world’s leading AI-powered developer platform.</p></li> <li id="menu-item-78830" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8 pt-2 pt-lg-4"><a href="https://github.blog/engineering/platform-security/" class="d-block f4 color-fg-default text-bold">Platform security</a><p class="mb-0 f5 color-fg-muted">Learn how we build security into everything we do across the developer lifecycle.</p></li> <li id="menu-item-78858" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right pt-2 pt-lg-4"><a href="https://github.blog/engineering/user-experience/" class="d-block f4 color-fg-default text-bold">User experience</a><p class="mb-0 f5 color-fg-muted">Find out what goes into making GitHub the home for all developers.</p></li> </ul> </li> <li id="menu-item-78868" class="p-5 py-xl-7 px-xl-8 col-4 color-bg-subtle card"><div class="d-block position-relative mb-3 rounded-2 tease-thumbnail overflow-hidden"><img width="800" height="425" src="https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.42.45 AM.png?resize=800%2C425" class="tease-thumbnail__img d-block width-full height-auto aspect-ratio-1032-548 object-fit-cover" alt="" decoding="async" srcset="https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.42.45 AM.png?w=800 800w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.42.45 AM.png?w=400 400w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.42.45 AM.png?w=1032 1032w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.42.45 AM.png?w=516 516w" sizes="(max-width: 800px) 100vw, 800px" /></div><a href="https://github.blog/engineering/how-we-use-github-to-be-more-productive-collaborative-and-secure/" class="d-block mb-2 f3 lh-condensed color-fg-default text-bold card__link">How we use GitHub to be more productive, collaborative, and secure</a><p class="mb-3 f5 color-fg-muted">Our engineering and security teams do some incredible work. Let’s take a look at how we use GitHub to be more productive, build collaboratively, and shift security left.</p><span class="Link d-inline-flex flex-items-center" role="presentation">Learn more<svg xmlns="http://www.w3.org/2000/svg" class="octicon d-block ml-1" viewBox="0 0 12 12" width="12" height="12"><path d="M4.7 10c-.2 0-.4-.1-.5-.2-.3-.3-.3-.8 0-1.1L6.9 6 4.2 3.3c-.3-.3-.3-.8 0-1.1.3-.3.8-.3 1.1 0l3.3 3.2c.3.3.3.8 0 1.1L5.3 9.7c-.2.2-.4.3-.6.3Z"></path></svg></span></li> </ul> </li> <li id="menu-item-78832"><a href="https://github.blog/enterprise-software/" class="position-relative d-flex flex-items-center flex-start no-wrap py-3 f4-mktg text-bold js-toggle" aria-controls="primary-78832-dropdown" aria-expanded="false" aria-haspopup="true" role="button">Enterprise software<svg viewBox="0 0 16 16" width="16" height="16" class="octicon d-block ml-1 color-fg-muted" role="presentation"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></a> <ul class="dropdown d-flex flex-wrap width-full position-absolute left-0 list-style-none mt-2 rounded-3 z-3 overflow-hidden color-border-subtle" aria-label="Enterprise software sub-menu" aria-hidden="true" data-color-mode="light" data-dark-theme="dark" data-light-theme="light" id="primary-78832-dropdown" tabindex="-1"> <li id="menu-item-78869" class="flex-1 p-5 py-xl-7 px-xl-7"><div class="col-9 mb-4 mb-lg-7"><a href="https://github.blog/enterprise-software/" class="d-flex flex-items-center flex-start f3 lh-condensed color-fg-default text-bold">Enterprise software<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right ml-1" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a><p class="mt-1 my-0 f4 color-fg-muted">Explore how to write, build, and deploy enterprise software at scale.</p></div> <ul class="d-flex flex-wrap list-style-none" aria-label="Enterprise software sub-menu"> <li id="menu-item-78833" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right"><a href="https://github.blog/enterprise-software/automation/" class="d-block f4 color-fg-default text-bold">Automation</a><p class="mb-0 f5 color-fg-muted">Automating your way to faster and more secure ships.</p></li> <li id="menu-item-78834" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8"><a href="https://github.blog/enterprise-software/ci-cd/" class="d-block f4 color-fg-default text-bold">CI/CD</a><p class="mb-0 f5 color-fg-muted">Guides on continuous integration and delivery.</p></li> <li id="menu-item-78835" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right pt-2 pt-lg-4"><a href="https://github.blog/enterprise-software/collaboration/" class="d-block f4 color-fg-default text-bold">Collaboration</a><p class="mb-0 f5 color-fg-muted">Tips, tools, and tricks to improve developer collaboration.</p></li> <li id="menu-item-78836" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8 pt-2 pt-lg-4"><a href="https://github.blog/enterprise-software/devops/" class="d-block f4 color-fg-default text-bold">DevOps</a><p class="mb-0 f5 color-fg-muted">DevOps resources for enterprise engineering teams.</p></li> <li id="menu-item-78837" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right pt-2 pt-lg-4"><a href="https://github.blog/enterprise-software/devsecops/" class="d-block f4 color-fg-default text-bold">DevSecOps</a><p class="mb-0 f5 color-fg-muted">How to integrate security into the SDLC.</p></li> <li id="menu-item-78838" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8 pt-2 pt-lg-4"><a href="https://github.blog/enterprise-software/governance-and-compliance/" class="d-block f4 color-fg-default text-bold">Governance &amp; compliance</a><p class="mb-0 f5 color-fg-muted">Ensuring your builds stay clean.</p></li> </ul> </li> <li id="menu-item-78870" class="p-5 py-xl-7 px-xl-8 col-4 color-bg-subtle card"><div class="d-block position-relative mb-3 rounded-2 tease-thumbnail overflow-hidden"><img width="800" height="425" src="https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.43.47 AM.png?resize=800%2C425" class="tease-thumbnail__img d-block width-full height-auto aspect-ratio-1032-548 object-fit-cover" alt="" decoding="async" srcset="https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.43.47 AM.png?w=800 800w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.43.47 AM.png?w=400 400w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.43.47 AM.png?w=1032 1032w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.43.47 AM.png?w=516 516w" sizes="(max-width: 800px) 100vw, 800px" /></div><a href="https://resources.github.com/artificial-intelligence/how-enterprise-engineering-teams-can-successfully-adopt-ai/" class="d-block mb-2 f3 lh-condensed color-fg-default text-bold card__link">How enterprise engineering teams can successfully adopt AI</a><p class="mb-3 f5 color-fg-muted">Learn how to bring AI to your engineering teams and maximize the value that you get from it.</p><span class="Link d-inline-flex flex-items-center" role="presentation">Learn more<svg xmlns="http://www.w3.org/2000/svg" class="octicon d-block ml-1" viewBox="0 0 12 12" width="12" height="12"><path d="M4.7 10c-.2 0-.4-.1-.5-.2-.3-.3-.3-.8 0-1.1L6.9 6 4.2 3.3c-.3-.3-.3-.8 0-1.1.3-.3.8-.3 1.1 0l3.3 3.2c.3.3.3.8 0 1.1L5.3 9.7c-.2.2-.4.3-.6.3Z"></path></svg></span></li> </ul> </li> <li id="menu-item-78840"><a href="https://github.blog/news-insights/" class="position-relative d-flex flex-items-center flex-start no-wrap py-3 f4-mktg text-bold js-toggle" aria-controls="primary-78840-dropdown" aria-expanded="false" aria-haspopup="true" role="button">News &amp; insights<svg viewBox="0 0 16 16" width="16" height="16" class="octicon d-block ml-1 color-fg-muted" role="presentation"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></a> <ul class="dropdown d-flex flex-wrap width-full position-absolute left-0 list-style-none mt-2 rounded-3 z-3 overflow-hidden color-border-subtle" aria-label="News &amp; insights sub-menu" aria-hidden="true" data-color-mode="light" data-dark-theme="dark" data-light-theme="light" id="primary-78840-dropdown" tabindex="-1"> <li id="menu-item-78871" class="flex-1 p-5 py-xl-7 px-xl-7"><div class="col-9 mb-4 mb-lg-7"><a href="https://github.blog/news-insights/" class="d-flex flex-items-center flex-start f3 lh-condensed color-fg-default text-bold">News &amp; insights<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right ml-1" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a><p class="mt-1 my-0 f4 color-fg-muted">Keep up with what’s new and notable from inside GitHub.</p></div> <ul class="d-flex flex-wrap list-style-none" aria-label="News &amp; insights sub-menu"> <li id="menu-item-78841" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right"><a href="https://github.blog/news-insights/company-news/" class="d-block f4 color-fg-default text-bold">Company news</a><p class="mb-0 f5 color-fg-muted">An inside look at news and product updates from GitHub.</p></li> <li id="menu-item-78844" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8"><a href="https://github.blog/news-insights/product-news/" class="d-block f4 color-fg-default text-bold">Product</a><p class="mb-0 f5 color-fg-muted">The latest on GitHub’s platform, products, and tools.</p></li> <li id="menu-item-78842" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right pt-2 pt-lg-4"><a href="https://github.blog/news-insights/octoverse/" class="d-block f4 color-fg-default text-bold">Octoverse</a><p class="mb-0 f5 color-fg-muted">Insights into the state of open source on GitHub.</p></li> <li id="menu-item-78843" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8 pt-2 pt-lg-4"><a href="https://github.blog/news-insights/policy-news-and-insights/" class="d-block f4 color-fg-default text-bold">Policy</a><p class="mb-0 f5 color-fg-muted">The latest policy and regulatory changes in software.</p></li> <li id="menu-item-78845" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right pt-2 pt-lg-4"><a href="https://github.blog/news-insights/research/" class="d-block f4 color-fg-default text-bold">Research</a><p class="mb-0 f5 color-fg-muted">Data-driven insights around the developer ecosystem.</p></li> <li id="menu-item-78847" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8 pt-2 pt-lg-4"><a href="https://github.blog/news-insights/the-library/" class="d-block f4 color-fg-default text-bold">The library</a><p class="mb-0 f5 color-fg-muted">Older news and updates from GitHub.</p></li> </ul> </li> <li id="menu-item-78872" class="p-5 py-xl-7 px-xl-8 col-4 color-bg-subtle card"><div class="d-block position-relative mb-3 rounded-2 tease-thumbnail overflow-hidden"><img width="800" height="425" src="https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.44.23 AM.png?resize=800%2C425" class="tease-thumbnail__img d-block width-full height-auto aspect-ratio-1032-548 object-fit-cover" alt="" decoding="async" srcset="https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.44.23 AM.png?w=300 300w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.44.23 AM.png?w=800 800w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.44.23 AM.png?w=400 400w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.44.23 AM.png?w=1032 1032w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.44.23 AM.png?w=516 516w" sizes="(max-width: 800px) 100vw, 800px" /></div><a href="https://github.blog/ai-and-ml/llms/unlocking-the-power-of-unstructured-data-with-rag/" class="d-block mb-2 f3 lh-condensed color-fg-default text-bold card__link">Unlocking the power of unstructured data with RAG</a><p class="mb-3 f5 color-fg-muted">Learn how to use retrieval-augmented generation (RAG) to capture more insights.</p><span class="Link d-inline-flex flex-items-center" role="presentation">Learn more<svg xmlns="http://www.w3.org/2000/svg" class="octicon d-block ml-1" viewBox="0 0 12 12" width="12" height="12"><path d="M4.7 10c-.2 0-.4-.1-.5-.2-.3-.3-.3-.8 0-1.1L6.9 6 4.2 3.3c-.3-.3-.3-.8 0-1.1.3-.3.8-.3 1.1 0l3.3 3.2c.3.3.3.8 0 1.1L5.3 9.7c-.2.2-.4.3-.6.3Z"></path></svg></span></li> </ul> </li> <li id="menu-item-78848"><a href="https://github.blog/open-source/" class="position-relative d-flex flex-items-center flex-start no-wrap py-3 f4-mktg text-bold js-toggle" aria-controls="primary-78848-dropdown" aria-expanded="false" aria-haspopup="true" role="button">Open Source<svg viewBox="0 0 16 16" width="16" height="16" class="octicon d-block ml-1 color-fg-muted" role="presentation"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></a> <ul class="dropdown d-flex flex-wrap width-full position-absolute left-0 list-style-none mt-2 rounded-3 z-3 overflow-hidden color-border-subtle" aria-label="Open Source sub-menu" aria-hidden="true" data-color-mode="light" data-dark-theme="dark" data-light-theme="light" id="primary-78848-dropdown" tabindex="-1"> <li id="menu-item-78873" class="flex-1 p-5 py-xl-7 px-xl-7"><div class="col-9 mb-4 mb-lg-7"><a href="https://github.blog/open-source/" class="d-flex flex-items-center flex-start f3 lh-condensed color-fg-default text-bold">Open Source<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right ml-1" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a><p class="mt-1 my-0 f4 color-fg-muted">Everything open source on GitHub.</p></div> <ul class="d-flex flex-wrap list-style-none" aria-label="Open Source sub-menu"> <li id="menu-item-78851" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right"><a href="https://github.blog/open-source/git/" class="d-block f4 color-fg-default text-bold">Git</a><p class="mb-0 f5 color-fg-muted">The latest Git updates.</p></li> <li id="menu-item-78853" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8"><a href="https://github.blog/open-source/maintainers/" class="d-block f4 color-fg-default text-bold">Maintainers</a><p class="mb-0 f5 color-fg-muted">Spotlighting open source maintainers.</p></li> <li id="menu-item-78854" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right pt-2 pt-lg-4"><a href="https://github.blog/open-source/social-impact/" class="d-block f4 color-fg-default text-bold">Social impact</a><p class="mb-0 f5 color-fg-muted">How open source is driving positive change.</p></li> <li id="menu-item-78850" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8 pt-2 pt-lg-4"><a href="https://github.blog/open-source/gaming/" class="d-block f4 color-fg-default text-bold">Gaming</a><p class="mb-0 f5 color-fg-muted">Explore open source games on GitHub.</p></li> </ul> </li> <li id="menu-item-78874" class="p-5 py-xl-7 px-xl-8 col-4 color-bg-subtle card"><div class="d-block position-relative mb-3 rounded-2 tease-thumbnail overflow-hidden"><img width="800" height="425" src="https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.46.23 AM.png?resize=800%2C425" class="tease-thumbnail__img d-block width-full height-auto aspect-ratio-1032-548 object-fit-cover" alt="" decoding="async" srcset="https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.46.23 AM.png?w=800 800w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.46.23 AM.png?w=400 400w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.46.23 AM.png?w=1032 1032w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.46.23 AM.png?w=516 516w" sizes="(max-width: 800px) 100vw, 800px" /></div><a href="https://resources.github.com/software-development/innersource/" class="d-block mb-2 f3 lh-condensed color-fg-default text-bold card__link">An introduction to innersource</a><p class="mb-3 f5 color-fg-muted">Organizations worldwide are incorporating open source methodologies into the way they build and ship their own software.</p><span class="Link d-inline-flex flex-items-center" role="presentation">Learn more<svg xmlns="http://www.w3.org/2000/svg" class="octicon d-block ml-1" viewBox="0 0 12 12" width="12" height="12"><path d="M4.7 10c-.2 0-.4-.1-.5-.2-.3-.3-.3-.8 0-1.1L6.9 6 4.2 3.3c-.3-.3-.3-.8 0-1.1.3-.3.8-.3 1.1 0l3.3 3.2c.3.3.3.8 0 1.1L5.3 9.7c-.2.2-.4.3-.6.3Z"></path></svg></span></li> </ul> </li> <li id="menu-item-78859"><a href="https://github.blog/security/" class="position-relative d-flex flex-items-center flex-start no-wrap py-3 f4-mktg text-bold js-toggle" aria-controls="primary-78859-dropdown" aria-expanded="false" aria-haspopup="true" role="button">Security<svg viewBox="0 0 16 16" width="16" height="16" class="octicon d-block ml-1 color-fg-muted" role="presentation"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg></a> <ul class="dropdown d-flex flex-wrap width-full position-absolute left-0 list-style-none mt-2 rounded-3 z-3 overflow-hidden color-border-subtle" aria-label="Security sub-menu" aria-hidden="true" data-color-mode="light" data-dark-theme="dark" data-light-theme="light" id="primary-78859-dropdown" tabindex="-1"> <li id="menu-item-78875" class="flex-1 p-5 py-xl-7 px-xl-7"><div class="col-9 mb-4 mb-lg-7"><a href="https://github.blog/security/" class="d-flex flex-items-center flex-start f3 lh-condensed color-fg-default text-bold">Security<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right ml-1" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a><p class="mt-1 my-0 f4 color-fg-muted">Stay up to date on everything security.</p></div> <ul class="d-flex flex-wrap list-style-none" aria-label="Security sub-menu"> <li id="menu-item-78860" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right"><a href="https://github.blog/security/application-security/" class="d-block f4 color-fg-default text-bold">Application security</a><p class="mb-0 f5 color-fg-muted">Application security, explained.</p></li> <li id="menu-item-78861" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8"><a href="https://github.blog/security/supply-chain-security/" class="d-block f4 color-fg-default text-bold">Supply chain security</a><p class="mb-0 f5 color-fg-muted">Demystifying supply chain security.</p></li> <li id="menu-item-78855" class="col-6 d-block f4 color-fg-default color-border-subtle pr-4 pr-lg-8 border-right pt-2 pt-lg-4"><a href="https://github.blog/security/vulnerability-research/" class="d-block f4 color-fg-default text-bold">Vulnerability research</a><p class="mb-0 f5 color-fg-muted">Updates from the GitHub Security Lab.</p></li> <li id="menu-item-78862" class="col-6 d-block f4 color-fg-default color-border-subtle pl-4 pl-lg-8 pt-2 pt-lg-4"><a href="https://github.blog/security/web-application-security/" class="d-block f4 color-fg-default text-bold">Web application security</a><p class="mb-0 f5 color-fg-muted">Helpful tips on securing web applications.</p></li> </ul> </li> <li id="menu-item-78876" class="p-5 py-xl-7 px-xl-8 col-4 color-bg-subtle card"><div class="d-block position-relative mb-3 rounded-2 tease-thumbnail overflow-hidden"><img width="800" height="425" src="https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.47.04 AM.png?resize=800%2C425" class="tease-thumbnail__img d-block width-full height-auto aspect-ratio-1032-548 object-fit-cover" alt="" decoding="async" srcset="https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.47.04 AM.png?w=800 800w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.47.04 AM.png?w=400 400w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.47.04 AM.png?w=1032 1032w, https://github.blog/wp-content/uploads/2024/07/Screenshot-2024-07-23-at-8.47.04 AM.png?w=516 516w" sizes="(max-width: 800px) 100vw, 800px" /></div><a href="https://resources.github.com/security/the-enterprise-guide-to-ai-powered-devsecops/" class="d-block mb-2 f3 lh-condensed color-fg-default text-bold card__link">The enterprise guide to AI-powered DevSecOps</a><p class="mb-3 f5 color-fg-muted">Learn about core challenges in DevSecOps, and how you can start addressing them with AI and automation.</p><span class="Link d-inline-flex flex-items-center" role="presentation">Learn more<svg xmlns="http://www.w3.org/2000/svg" class="octicon d-block ml-1" viewBox="0 0 12 12" width="12" height="12"><path d="M4.7 10c-.2 0-.4-.1-.5-.2-.3-.3-.3-.8 0-1.1L6.9 6 4.2 3.3c-.3-.3-.3-.8 0-1.1.3-.3.8-.3 1.1 0l3.3 3.2c.3.3.3.8 0 1.1L5.3 9.7c-.2.2-.4.3-.6.3Z"></path></svg></span></li> </ul> </li> </ul> </div> </nav> </div> <form id="mobile-search" role="search" method="get" class="mobile-search" action="https://github.blog" aria-hidden="true" aria-label="Search form"> <div class="d-flex flex-1 p-3 color-bg-inset"> <div class="d-flex flex-1 position-relative color-bg-transparent" data-color-mode="light" data-light-theme="light" data-dark-theme="dark" > <svg height="20" class="d-flex position-absolute z-3 octicon height-full ml-2 color-fg-subtle" aria-hidden="true" viewBox="0 0 16 16" version="1.1" width="20" role="img"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg> <input aria-label="Search the blog" type="search" class="pl-6 search-field form-control p-2 flex-1" placeholder="Search the blog…" value="" name="s" id="search-input"> </div> <button class="Button Button--size-medium Button--secondary ml-2" type="submit" > <span class="Button__text"> <span class="Text Text--200 Text--antialiased Text--weight-semibold Button--label Button--label-medium Button--label-secondary"> Search </span> </span> </button> </div> </form> <nav id="mobile-menu" class="mobile-menu position-relative overflow-y-auto flex-1 width-full rounded-top-3" aria-label="Navigation menu" aria-hidden="true" data-color-mode="light" data-light-theme="light" data-dark-theme="dark_dimmed"> <div class="p-5"> <h2 class="mb-5 text-bold color-fg-subtle">Categories</h2> <ul id="menu-new-primary-navigation" class="list-style-none"><li class="mb-5"><a href="https://github.blog/ai-and-ml/" class="d-flex flex-items-center flex-justify-between lh-condensed-ultra text-bold color-fg-default js-toggle" aria-controls="primary-mobile-78814-dropdown" aria-expanded="false" aria-haspopup="true" role="button">AI &amp; ML<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right d-block color-fg-subtle" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a> <ul aria-hidden="true" aria-label="AI &amp; ML sub-menu" class="dropdown overflow-y-auto position-absolute top-0 left-0 right-0 bottom-0 flex-wrap p-5 list-style-none rounded-3 z-3 color-bg-default color-border-subtle" id="primary-mobile-78814-dropdown"> <li class="mb-5"><div class="mb-4"><button type="button" class="d-flex flex-items-center mb-4 p-0 border-0 text-semibold color-bg-transparent color-fg-subtle" aria-controls="primary-mobile-78814-dropdown" aria-expanded="true"><svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-left mr-1"><path d="M9.78 12.78a.75.75 0 0 1-1.06 0L4.47 8.53a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L6.06 8l3.72 3.72a.75.75 0 0 1 0 1.06Z"></path></svg>Back</button><a href="https://github.blog/ai-and-ml/" class="d-flex flex-items-center flex-justify-start lh-condensed-ultra text-bold color-fg-default">AI &amp; ML<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right ml-1" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a><p class="mt-2 mb-0 color-fg-muted">Learn about artificial intelligence and machine learning across the GitHub ecosystem and the wider industry.</p></div> <ul class="border-top list-style-none"> <li class="mt-4"><a href="https://github.blog/ai-and-ml/generative-ai/" class="text-bold lh-condensed-ultra color-fg-default">Generative AI</a><p class="mb-0 f5 color-fg-muted">Learn how to build with generative AI.</p></li> <li class="mt-4"><a href="https://github.blog/ai-and-ml/github-copilot/" class="text-bold lh-condensed-ultra color-fg-default">GitHub Copilot</a><p class="mb-0 f5 color-fg-muted">Change how you work with GitHub Copilot.</p></li> <li class="mt-4"><a href="https://github.blog/ai-and-ml/llms/" class="text-bold lh-condensed-ultra color-fg-default">LLMs</a><p class="mb-0 f5 color-fg-muted">Everything developers need to know about LLMs.</p></li> <li class="mt-4"><a href="https://github.blog/ai-and-ml/machine-learning/" class="text-bold lh-condensed-ultra color-fg-default">Machine learning</a><p class="mb-0 f5 color-fg-muted">Machine learning tips, tricks, and best practices.</p></li> </ul> </li> <li class="d-none"><div class="mb-4"><a href="https://github.blog/ai-and-ml/generative-ai/how-ai-code-generation-works/" class="d-flex flex-items-center flex-justify-start lh-condensed-ultra text-bold color-fg-default">How AI code generation works</a><p class="mb-3 f5 color-fg-muted">Explore the capabilities and benefits of AI code generation and how it can improve your developer experience.</p><a href="https://github.blog/ai-and-ml/generative-ai/how-ai-code-generation-works/" target="" class="Link d-inline-flex flex-items-center">Learn more<svg xmlns="http://www.w3.org/2000/svg" class="octicon d-block ml-1" viewBox="0 0 12 12" width="12" height="12"><path d="M4.7 10c-.2 0-.4-.1-.5-.2-.3-.3-.3-.8 0-1.1L6.9 6 4.2 3.3c-.3-.3-.3-.8 0-1.1.3-.3.8-.3 1.1 0l3.3 3.2c.3.3.3.8 0 1.1L5.3 9.7c-.2.2-.4.3-.6.3Z"></path></svg></a></div></li> </ul> </li> <li class="mb-5"><a href="https://github.blog/developer-skills/" class="d-flex flex-items-center flex-justify-between lh-condensed-ultra text-bold color-fg-default js-toggle" aria-controls="primary-mobile-78819-dropdown" aria-expanded="false" aria-haspopup="true" role="button">Developer skills<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right d-block color-fg-subtle" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a> <ul aria-hidden="true" aria-label="Developer skills sub-menu" class="dropdown overflow-y-auto position-absolute top-0 left-0 right-0 bottom-0 flex-wrap p-5 list-style-none rounded-3 z-3 color-bg-default color-border-subtle" id="primary-mobile-78819-dropdown"> <li class="mb-5"><div class="mb-4"><button type="button" class="d-flex flex-items-center mb-4 p-0 border-0 text-semibold color-bg-transparent color-fg-subtle" aria-controls="primary-mobile-78819-dropdown" aria-expanded="true"><svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-left mr-1"><path d="M9.78 12.78a.75.75 0 0 1-1.06 0L4.47 8.53a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L6.06 8l3.72 3.72a.75.75 0 0 1 0 1.06Z"></path></svg>Back</button><a href="https://github.blog/developer-skills/" class="d-flex flex-items-center flex-justify-start lh-condensed-ultra text-bold color-fg-default">Developer skills<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right ml-1" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a><p class="mt-2 mb-0 color-fg-muted">Resources for developers to grow in their skills and careers.</p></div> <ul class="border-top list-style-none"> <li class="mt-4"><a href="https://github.blog/developer-skills/application-development/" class="text-bold lh-condensed-ultra color-fg-default">Application development</a><p class="mb-0 f5 color-fg-muted">Insights and best practices for building apps.</p></li> <li class="mt-4"><a href="https://github.blog/developer-skills/career-growth/" class="text-bold lh-condensed-ultra color-fg-default">Career growth</a><p class="mb-0 f5 color-fg-muted">Tips &amp; tricks to grow as a professional developer.</p></li> <li class="mt-4"><a href="https://github.blog/developer-skills/github/" class="text-bold lh-condensed-ultra color-fg-default">GitHub</a><p class="mb-0 f5 color-fg-muted">Improve how you use GitHub at work.</p></li> <li class="mt-4"><a href="https://github.blog/developer-skills/github-education/" class="text-bold lh-condensed-ultra color-fg-default">GitHub Education</a><p class="mb-0 f5 color-fg-muted">Learn how to move into your first professional role.</p></li> <li class="mt-4"><a href="https://github.blog/developer-skills/programming-languages-and-frameworks/" class="text-bold lh-condensed-ultra color-fg-default">Programming languages &amp; frameworks</a><p class="mb-0 f5 color-fg-muted">Stay current on what’s new (or new again).</p></li> </ul> </li> <li class="d-none"><div class="mb-4"><a href="https://docs.github.com/en/get-started" class="d-flex flex-items-center flex-justify-start lh-condensed-ultra text-bold color-fg-default">Get started with GitHub documentation</a><p class="mb-3 f5 color-fg-muted">Learn how to start building, shipping, and maintaining software with GitHub.</p><a href="https://docs.github.com/en/get-started" target="" class="Link d-inline-flex flex-items-center">Learn more<svg xmlns="http://www.w3.org/2000/svg" class="octicon d-block ml-1" viewBox="0 0 12 12" width="12" height="12"><path d="M4.7 10c-.2 0-.4-.1-.5-.2-.3-.3-.3-.8 0-1.1L6.9 6 4.2 3.3c-.3-.3-.3-.8 0-1.1.3-.3.8-.3 1.1 0l3.3 3.2c.3.3.3.8 0 1.1L5.3 9.7c-.2.2-.4.3-.6.3Z"></path></svg></a></div></li> </ul> </li> <li class="mb-5"><a href="https://github.blog/engineering/" class="d-flex flex-items-center flex-justify-between lh-condensed-ultra text-bold color-fg-default js-toggle" aria-controls="primary-mobile-78825-dropdown" aria-expanded="false" aria-haspopup="true" role="button">Engineering<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right d-block color-fg-subtle" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a> <ul aria-hidden="true" aria-label="Engineering sub-menu" class="dropdown overflow-y-auto position-absolute top-0 left-0 right-0 bottom-0 flex-wrap p-5 list-style-none rounded-3 z-3 color-bg-default color-border-subtle" id="primary-mobile-78825-dropdown"> <li class="mb-5"><div class="mb-4"><button type="button" class="d-flex flex-items-center mb-4 p-0 border-0 text-semibold color-bg-transparent color-fg-subtle" aria-controls="primary-mobile-78825-dropdown" aria-expanded="true"><svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-left mr-1"><path d="M9.78 12.78a.75.75 0 0 1-1.06 0L4.47 8.53a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L6.06 8l3.72 3.72a.75.75 0 0 1 0 1.06Z"></path></svg>Back</button><a href="https://github.blog/engineering/" class="d-flex flex-items-center flex-justify-start lh-condensed-ultra text-bold color-fg-default">Engineering<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right ml-1" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a><p class="mt-2 mb-0 color-fg-muted">Get an inside look at how we’re building the home for all developers.</p></div> <ul class="border-top list-style-none"> <li class="mt-4"><a href="https://github.blog/engineering/architecture-optimization/" class="text-bold lh-condensed-ultra color-fg-default">Architecture &amp; optimization</a><p class="mb-0 f5 color-fg-muted">Discover how we deliver a performant and highly available experience across the GitHub platform.</p></li> <li class="mt-4"><a href="https://github.blog/engineering/engineering-principles/" class="text-bold lh-condensed-ultra color-fg-default">Engineering principles</a><p class="mb-0 f5 color-fg-muted">Explore best practices for building software at scale with a majority remote team.</p></li> <li class="mt-4"><a href="https://github.blog/engineering/infrastructure/" class="text-bold lh-condensed-ultra color-fg-default">Infrastructure</a><p class="mb-0 f5 color-fg-muted">Get a glimpse at the technology underlying the world’s leading AI-powered developer platform.</p></li> <li class="mt-4"><a href="https://github.blog/engineering/platform-security/" class="text-bold lh-condensed-ultra color-fg-default">Platform security</a><p class="mb-0 f5 color-fg-muted">Learn how we build security into everything we do across the developer lifecycle.</p></li> <li class="mt-4"><a href="https://github.blog/engineering/user-experience/" class="text-bold lh-condensed-ultra color-fg-default">User experience</a><p class="mb-0 f5 color-fg-muted">Find out what goes into making GitHub the home for all developers.</p></li> </ul> </li> <li class="d-none"><div class="mb-4"><a href="https://github.blog/engineering/how-we-use-github-to-be-more-productive-collaborative-and-secure/" class="d-flex flex-items-center flex-justify-start lh-condensed-ultra text-bold color-fg-default">How we use GitHub to be more productive, collaborative, and secure</a><p class="mb-3 f5 color-fg-muted">Our engineering and security teams do some incredible work. Let’s take a look at how we use GitHub to be more productive, build collaboratively, and shift security left.</p><a href="https://github.blog/engineering/how-we-use-github-to-be-more-productive-collaborative-and-secure/" target="" class="Link d-inline-flex flex-items-center">Learn more<svg xmlns="http://www.w3.org/2000/svg" class="octicon d-block ml-1" viewBox="0 0 12 12" width="12" height="12"><path d="M4.7 10c-.2 0-.4-.1-.5-.2-.3-.3-.3-.8 0-1.1L6.9 6 4.2 3.3c-.3-.3-.3-.8 0-1.1.3-.3.8-.3 1.1 0l3.3 3.2c.3.3.3.8 0 1.1L5.3 9.7c-.2.2-.4.3-.6.3Z"></path></svg></a></div></li> </ul> </li> <li class="mb-5"><a href="https://github.blog/enterprise-software/" class="d-flex flex-items-center flex-justify-between lh-condensed-ultra text-bold color-fg-default js-toggle" aria-controls="primary-mobile-78832-dropdown" aria-expanded="false" aria-haspopup="true" role="button">Enterprise software<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right d-block color-fg-subtle" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a> <ul aria-hidden="true" aria-label="Enterprise software sub-menu" class="dropdown overflow-y-auto position-absolute top-0 left-0 right-0 bottom-0 flex-wrap p-5 list-style-none rounded-3 z-3 color-bg-default color-border-subtle" id="primary-mobile-78832-dropdown"> <li class="mb-5"><div class="mb-4"><button type="button" class="d-flex flex-items-center mb-4 p-0 border-0 text-semibold color-bg-transparent color-fg-subtle" aria-controls="primary-mobile-78832-dropdown" aria-expanded="true"><svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-left mr-1"><path d="M9.78 12.78a.75.75 0 0 1-1.06 0L4.47 8.53a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L6.06 8l3.72 3.72a.75.75 0 0 1 0 1.06Z"></path></svg>Back</button><a href="https://github.blog/enterprise-software/" class="d-flex flex-items-center flex-justify-start lh-condensed-ultra text-bold color-fg-default">Enterprise software<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right ml-1" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a><p class="mt-2 mb-0 color-fg-muted">Explore how to write, build, and deploy enterprise software at scale.</p></div> <ul class="border-top list-style-none"> <li class="mt-4"><a href="https://github.blog/enterprise-software/automation/" class="text-bold lh-condensed-ultra color-fg-default">Automation</a><p class="mb-0 f5 color-fg-muted">Automating your way to faster and more secure ships.</p></li> <li class="mt-4"><a href="https://github.blog/enterprise-software/ci-cd/" class="text-bold lh-condensed-ultra color-fg-default">CI/CD</a><p class="mb-0 f5 color-fg-muted">Guides on continuous integration and delivery.</p></li> <li class="mt-4"><a href="https://github.blog/enterprise-software/collaboration/" class="text-bold lh-condensed-ultra color-fg-default">Collaboration</a><p class="mb-0 f5 color-fg-muted">Tips, tools, and tricks to improve developer collaboration.</p></li> <li class="mt-4"><a href="https://github.blog/enterprise-software/devops/" class="text-bold lh-condensed-ultra color-fg-default">DevOps</a><p class="mb-0 f5 color-fg-muted">DevOps resources for enterprise engineering teams.</p></li> <li class="mt-4"><a href="https://github.blog/enterprise-software/devsecops/" class="text-bold lh-condensed-ultra color-fg-default">DevSecOps</a><p class="mb-0 f5 color-fg-muted">How to integrate security into the SDLC.</p></li> <li class="mt-4"><a href="https://github.blog/enterprise-software/governance-and-compliance/" class="text-bold lh-condensed-ultra color-fg-default">Governance &amp; compliance</a><p class="mb-0 f5 color-fg-muted">Ensuring your builds stay clean.</p></li> </ul> </li> <li class="d-none"><div class="mb-4"><a href="https://resources.github.com/artificial-intelligence/how-enterprise-engineering-teams-can-successfully-adopt-ai/" class="d-flex flex-items-center flex-justify-start lh-condensed-ultra text-bold color-fg-default">How enterprise engineering teams can successfully adopt AI</a><p class="mb-3 f5 color-fg-muted">Learn how to bring AI to your engineering teams and maximize the value that you get from it.</p><a href="https://resources.github.com/artificial-intelligence/how-enterprise-engineering-teams-can-successfully-adopt-ai/" target="" class="Link d-inline-flex flex-items-center">Learn more<svg xmlns="http://www.w3.org/2000/svg" class="octicon d-block ml-1" viewBox="0 0 12 12" width="12" height="12"><path d="M4.7 10c-.2 0-.4-.1-.5-.2-.3-.3-.3-.8 0-1.1L6.9 6 4.2 3.3c-.3-.3-.3-.8 0-1.1.3-.3.8-.3 1.1 0l3.3 3.2c.3.3.3.8 0 1.1L5.3 9.7c-.2.2-.4.3-.6.3Z"></path></svg></a></div></li> </ul> </li> <li class="mb-5"><a href="https://github.blog/news-insights/" class="d-flex flex-items-center flex-justify-between lh-condensed-ultra text-bold color-fg-default js-toggle" aria-controls="primary-mobile-78840-dropdown" aria-expanded="false" aria-haspopup="true" role="button">News &amp; insights<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right d-block color-fg-subtle" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a> <ul aria-hidden="true" aria-label="News &amp; insights sub-menu" class="dropdown overflow-y-auto position-absolute top-0 left-0 right-0 bottom-0 flex-wrap p-5 list-style-none rounded-3 z-3 color-bg-default color-border-subtle" id="primary-mobile-78840-dropdown"> <li class="mb-5"><div class="mb-4"><button type="button" class="d-flex flex-items-center mb-4 p-0 border-0 text-semibold color-bg-transparent color-fg-subtle" aria-controls="primary-mobile-78840-dropdown" aria-expanded="true"><svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-left mr-1"><path d="M9.78 12.78a.75.75 0 0 1-1.06 0L4.47 8.53a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L6.06 8l3.72 3.72a.75.75 0 0 1 0 1.06Z"></path></svg>Back</button><a href="https://github.blog/news-insights/" class="d-flex flex-items-center flex-justify-start lh-condensed-ultra text-bold color-fg-default">News &amp; insights<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right ml-1" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a><p class="mt-2 mb-0 color-fg-muted">Keep up with what’s new and notable from inside GitHub.</p></div> <ul class="border-top list-style-none"> <li class="mt-4"><a href="https://github.blog/news-insights/company-news/" class="text-bold lh-condensed-ultra color-fg-default">Company news</a><p class="mb-0 f5 color-fg-muted">An inside look at news and product updates from GitHub.</p></li> <li class="mt-4"><a href="https://github.blog/news-insights/product-news/" class="text-bold lh-condensed-ultra color-fg-default">Product</a><p class="mb-0 f5 color-fg-muted">The latest on GitHub’s platform, products, and tools.</p></li> <li class="mt-4"><a href="https://github.blog/news-insights/octoverse/" class="text-bold lh-condensed-ultra color-fg-default">Octoverse</a><p class="mb-0 f5 color-fg-muted">Insights into the state of open source on GitHub.</p></li> <li class="mt-4"><a href="https://github.blog/news-insights/policy-news-and-insights/" class="text-bold lh-condensed-ultra color-fg-default">Policy</a><p class="mb-0 f5 color-fg-muted">The latest policy and regulatory changes in software.</p></li> <li class="mt-4"><a href="https://github.blog/news-insights/research/" class="text-bold lh-condensed-ultra color-fg-default">Research</a><p class="mb-0 f5 color-fg-muted">Data-driven insights around the developer ecosystem.</p></li> <li class="mt-4"><a href="https://github.blog/news-insights/the-library/" class="text-bold lh-condensed-ultra color-fg-default">The library</a><p class="mb-0 f5 color-fg-muted">Older news and updates from GitHub.</p></li> </ul> </li> <li class="d-none"><div class="mb-4"><a href="https://github.blog/ai-and-ml/llms/unlocking-the-power-of-unstructured-data-with-rag/" class="d-flex flex-items-center flex-justify-start lh-condensed-ultra text-bold color-fg-default">Unlocking the power of unstructured data with RAG</a><p class="mb-3 f5 color-fg-muted">Learn how to use retrieval-augmented generation (RAG) to capture more insights.</p><a href="https://github.blog/ai-and-ml/llms/unlocking-the-power-of-unstructured-data-with-rag/" target="" class="Link d-inline-flex flex-items-center">Learn more<svg xmlns="http://www.w3.org/2000/svg" class="octicon d-block ml-1" viewBox="0 0 12 12" width="12" height="12"><path d="M4.7 10c-.2 0-.4-.1-.5-.2-.3-.3-.3-.8 0-1.1L6.9 6 4.2 3.3c-.3-.3-.3-.8 0-1.1.3-.3.8-.3 1.1 0l3.3 3.2c.3.3.3.8 0 1.1L5.3 9.7c-.2.2-.4.3-.6.3Z"></path></svg></a></div></li> </ul> </li> <li class="mb-5"><a href="https://github.blog/open-source/" class="d-flex flex-items-center flex-justify-between lh-condensed-ultra text-bold color-fg-default js-toggle" aria-controls="primary-mobile-78848-dropdown" aria-expanded="false" aria-haspopup="true" role="button">Open Source<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right d-block color-fg-subtle" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a> <ul aria-hidden="true" aria-label="Open Source sub-menu" class="dropdown overflow-y-auto position-absolute top-0 left-0 right-0 bottom-0 flex-wrap p-5 list-style-none rounded-3 z-3 color-bg-default color-border-subtle" id="primary-mobile-78848-dropdown"> <li class="mb-5"><div class="mb-4"><button type="button" class="d-flex flex-items-center mb-4 p-0 border-0 text-semibold color-bg-transparent color-fg-subtle" aria-controls="primary-mobile-78848-dropdown" aria-expanded="true"><svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-left mr-1"><path d="M9.78 12.78a.75.75 0 0 1-1.06 0L4.47 8.53a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L6.06 8l3.72 3.72a.75.75 0 0 1 0 1.06Z"></path></svg>Back</button><a href="https://github.blog/open-source/" class="d-flex flex-items-center flex-justify-start lh-condensed-ultra text-bold color-fg-default">Open Source<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right ml-1" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a><p class="mt-2 mb-0 color-fg-muted">Everything open source on GitHub.</p></div> <ul class="border-top list-style-none"> <li class="mt-4"><a href="https://github.blog/open-source/git/" class="text-bold lh-condensed-ultra color-fg-default">Git</a><p class="mb-0 f5 color-fg-muted">The latest Git updates.</p></li> <li class="mt-4"><a href="https://github.blog/open-source/maintainers/" class="text-bold lh-condensed-ultra color-fg-default">Maintainers</a><p class="mb-0 f5 color-fg-muted">Spotlighting open source maintainers.</p></li> <li class="mt-4"><a href="https://github.blog/open-source/social-impact/" class="text-bold lh-condensed-ultra color-fg-default">Social impact</a><p class="mb-0 f5 color-fg-muted">How open source is driving positive change.</p></li> <li class="mt-4"><a href="https://github.blog/open-source/gaming/" class="text-bold lh-condensed-ultra color-fg-default">Gaming</a><p class="mb-0 f5 color-fg-muted">Explore open source games on GitHub.</p></li> </ul> </li> <li class="d-none"><div class="mb-4"><a href="https://resources.github.com/software-development/innersource/" class="d-flex flex-items-center flex-justify-start lh-condensed-ultra text-bold color-fg-default">An introduction to innersource</a><p class="mb-3 f5 color-fg-muted">Organizations worldwide are incorporating open source methodologies into the way they build and ship their own software.</p><a href="https://resources.github.com/software-development/innersource/" target="" class="Link d-inline-flex flex-items-center">Learn more<svg xmlns="http://www.w3.org/2000/svg" class="octicon d-block ml-1" viewBox="0 0 12 12" width="12" height="12"><path d="M4.7 10c-.2 0-.4-.1-.5-.2-.3-.3-.3-.8 0-1.1L6.9 6 4.2 3.3c-.3-.3-.3-.8 0-1.1.3-.3.8-.3 1.1 0l3.3 3.2c.3.3.3.8 0 1.1L5.3 9.7c-.2.2-.4.3-.6.3Z"></path></svg></a></div></li> </ul> </li> <li class="mb-5"><a href="https://github.blog/security/" class="d-flex flex-items-center flex-justify-between lh-condensed-ultra text-bold color-fg-default js-toggle" aria-controls="primary-mobile-78859-dropdown" aria-expanded="false" aria-haspopup="true" role="button">Security<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right d-block color-fg-subtle" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a> <ul aria-hidden="true" aria-label="Security sub-menu" class="dropdown overflow-y-auto position-absolute top-0 left-0 right-0 bottom-0 flex-wrap p-5 list-style-none rounded-3 z-3 color-bg-default color-border-subtle" id="primary-mobile-78859-dropdown"> <li class="mb-5"><div class="mb-4"><button type="button" class="d-flex flex-items-center mb-4 p-0 border-0 text-semibold color-bg-transparent color-fg-subtle" aria-controls="primary-mobile-78859-dropdown" aria-expanded="true"><svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-left mr-1"><path d="M9.78 12.78a.75.75 0 0 1-1.06 0L4.47 8.53a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L6.06 8l3.72 3.72a.75.75 0 0 1 0 1.06Z"></path></svg>Back</button><a href="https://github.blog/security/" class="d-flex flex-items-center flex-justify-start lh-condensed-ultra text-bold color-fg-default">Security<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-chevron-right ml-1" role="presentation"><path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path></svg></a><p class="mt-2 mb-0 color-fg-muted">Stay up to date on everything security.</p></div> <ul class="border-top list-style-none"> <li class="mt-4"><a href="https://github.blog/security/application-security/" class="text-bold lh-condensed-ultra color-fg-default">Application security</a><p class="mb-0 f5 color-fg-muted">Application security, explained.</p></li> <li class="mt-4"><a href="https://github.blog/security/supply-chain-security/" class="text-bold lh-condensed-ultra color-fg-default">Supply chain security</a><p class="mb-0 f5 color-fg-muted">Demystifying supply chain security.</p></li> <li class="mt-4"><a href="https://github.blog/security/vulnerability-research/" class="text-bold lh-condensed-ultra color-fg-default">Vulnerability research</a><p class="mb-0 f5 color-fg-muted">Updates from the GitHub Security Lab.</p></li> <li class="mt-4"><a href="https://github.blog/security/web-application-security/" class="text-bold lh-condensed-ultra color-fg-default">Web application security</a><p class="mb-0 f5 color-fg-muted">Helpful tips on securing web applications.</p></li> </ul> </li> <li class="d-none"><div class="mb-4"><a href="https://resources.github.com/security/the-enterprise-guide-to-ai-powered-devsecops/" class="d-flex flex-items-center flex-justify-start lh-condensed-ultra text-bold color-fg-default">The enterprise guide to AI-powered DevSecOps</a><p class="mb-3 f5 color-fg-muted">Learn about core challenges in DevSecOps, and how you can start addressing them with AI and automation.</p><a href="https://resources.github.com/security/the-enterprise-guide-to-ai-powered-devsecops/" target="" class="Link d-inline-flex flex-items-center">Learn more<svg xmlns="http://www.w3.org/2000/svg" class="octicon d-block ml-1" viewBox="0 0 12 12" width="12" height="12"><path d="M4.7 10c-.2 0-.4-.1-.5-.2-.3-.3-.3-.8 0-1.1L6.9 6 4.2 3.3c-.3-.3-.3-.8 0-1.1.3-.3.8-.3 1.1 0l3.3 3.2c.3.3.3.8 0 1.1L5.3 9.7c-.2.2-.4.3-.6.3Z"></path></svg></a></div></li> </ul> </li> </ul><ul id="menu-secondary-navigation" class="pt-5 border-top list-style-none"><li class="mb-5"><a href="https://github.blog/changelog/" class="d-flex flex-items-center flex-justify-between lh-condensed-ultra text-bold color-fg-default">Changelog</a></li> <li class="mb-5"><a href="https://docs.github.com/" class="d-flex flex-items-center flex-justify-between lh-condensed-ultra text-bold color-fg-default">Docs<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-link-external d-block color-fg-subtle" role="presentation"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li> <li class="mb-5"><a href="https://github.com/customer-stories" class="d-flex flex-items-center flex-justify-between lh-condensed-ultra text-bold color-fg-default">Customer stories<svg viewBox="0 0 16 16" width="16" height="16" class="octicon octicon-link-external d-block color-fg-subtle" role="presentation"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li> </ul> <a class="Button Button--size-medium Button--secondary Button--block my-3" href="https://github.com/enterprise/contact?ref_cta=contact20sales&#038;ref_loc=banner&#038;ref_page=blog" target="_blank" data-analytics-click="Blog, click on button, text: Contact sales; ref_location:top nav;" > <span class="Button__text"> <span class="Text Text--200 Text--antialiased Text--weight-semibold Button--label Button--label-medium Button--label-secondary"> Contact sales </span> </span> </a> <a class="Button Button--size-medium Button--primary Button--block" href="https://github.com/features/copilot?utm_source=topnav&#038;utm_medium=blog&#038;utm_campaign=copilotfree" target="_blank" data-analytics-click="Blog, click on button, text: Use Copilot for free; ref_location:top nav;" > <span class="Button__text"> <span class="Text Text--200 Text--antialiased Text--weight-semibold Button--label Button--label-medium Button--label-primary"> Use Copilot for free </span> </span> </a> </div> </nav> </header> </div> <main id="start-of-content"> <div class="gh-changelog-archive-hero d-flex flex-md-items-center position-relative overflow-hidden"> <div class="position-absolute width-full height-full top-0 right-0 events-none"> <img width="1600" height="356" class="object-fit-cover d-none d-md-block width-full height-full" alt="" aria-hidden="true" srcset="https://github.blog/wp-content/themes/github-2021/assets/img/backgrounds/changelog-hero-bg-desktop.jpg, https://github.blog/wp-content/themes/github-2021/assets/img/backgrounds/changelog-hero-bg-desktop@2x.jpg 2x" src="https://github.blog/wp-content/themes/github-2021/assets/img/backgrounds/changelog-hero-bg-desktop.jpg" /> <img width="943" height="514" class="object-fit-cover d-block d-md-none float-left width-fit height-full" alt="" aria-hidden="true" srcset="https://github.blog/wp-content/themes/github-2021/assets/img/backgrounds/changelog-hero-bg-mobile.jpg, https://github.blog/wp-content/themes/github-2021/assets/img/backgrounds/changelog-hero-bg-mobile@2x.jpg 2x" src="https://github.blog/wp-content/themes/github-2021/assets/img/backgrounds/changelog-hero-bg-mobile.jpg" /> </div> <div class="container-xl mx-auto p-responsive-blog width-full position-relative z-1"> <div class="d-flex flex-wrap flex-md-items-center gutter-spacious"> <div class="col-12 col-md-6"> <h1 class="h3-mktg m-0 text-capitalize" style="overflow-wrap: normal;">api</h1> <p class="f3-mktg col-9-max mt-3 mt-md-4 mb-8 mb-md-0">Subscribe to all <span class="text-capitalize">“api”</span> posts via <a class="cl-label-hero__text_link cl-label-hero__text_link_rss" href="https://github.blog/changelog/label/api/feed/">RSS</a> or follow GitHub Changelog on <a class="cl-label-hero__text_link cl-label-hero__text_link_twitter" href="https://twitter.com/ghchangelog">Twitter</a> to stay updated on everything we ship.</p> </div> <div class="col-12 col-md-6"> <div class="changelog-terminal rounded-2 overflow-hidden position-md-relative top-md-8 float-md-right mx-auto mx-md-0 d-flex flex-column"> <div class="gh-terminal-handlebar"> <span class="gh-terminal-handlebar-buttons d-flex flex-row"></span> </div> <div class="gh-terminal-content terminal-mktg text-mono color-bg-default height-full p-3 p-md-4 js-type-in build-in-animate" data-type-delay="80" data-type-row-delay="400" data-color-mode="dark" data-light-theme="light" data-dark-theme="dark"> <div class="js-type-row"> <strong class="code-pink">→</strong> <strong class="color-fg-success">~</strong> <span class="js-type-letters">cd github-changelog</span> </div> <div class="js-type-row"> <strong class="code-pink">→</strong> <strong class="color-fg-success">~/github-changelog|<span class="color-fg-done">main</span></strong> <span class="js-type-letters">git log main</span> </div> <div class="js-type-row"> <span>showing all changes successfully</span> </div> </div> </div> </div> </div> </div> </div> <div class="py-4 border-bottom color-border-subtle" style="border-bottom-color: #EAEEF2 !important;"> <div class="container-xl mx-auto p-responsive-blog"> <form id="changelog-category-select" action="" method="get" class="gh-select-wrap d-inline-block position-relative"> <button type="button" class="gh-select js-changelog-category-dropdown-toggle position-relative" aria-expanded="false" aria-controls="changelog-categories"> api <svg class="octicon octicon-triangle-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path d="M4.427 7.427l3.396 3.396a.25.25 0 00.354 0l3.396-3.396A.25.25 0 0011.396 7H4.604a.25.25 0 00-.177.427z" fill="currentColor"></path></svg> </button> <select class="gh-select-fallback js-changelog-category-dropdown-fallback" onchange="const clgform = document.getElementById('changelog-category-select'); clgform.action = this.value; clgform.submit();"> <option value="https://github.blog/changelog">All categories</option> <option value="https://github.blog/changelog/label/2fa/">2fa</option> <option value="https://github.blog/changelog/label/accessibility/">accessibility</option> <option value="https://github.blog/changelog/label/actions/">actions</option> <option value="https://github.blog/changelog/label/actions-importer/">actions-importer</option> <option value="https://github.blog/changelog/label/admin/">admin</option> <option value="https://github.blog/changelog/label/advanced-security/">advanced-security</option> <option value="https://github.blog/changelog/label/advisory-database/">advisory-database</option> <option value="https://github.blog/changelog/label/api/" selected>api</option> <option value="https://github.blog/changelog/label/apps/">apps</option> <option value="https://github.blog/changelog/label/audit-log/">audit-log</option> <option value="https://github.blog/changelog/label/authentication/">authentication</option> <option value="https://github.blog/changelog/label/billing/">billing</option> <option value="https://github.blog/changelog/label/branches/">branches</option> <option value="https://github.blog/changelog/label/branchprotections/">branchprotections</option> <option value="https://github.blog/changelog/label/brownout/">brownout</option> <option value="https://github.blog/changelog/label/cache/">cache</option> <option value="https://github.blog/changelog/label/chatops/">chatops</option> <option value="https://github.blog/changelog/label/cli/">cli</option> <option value="https://github.blog/changelog/label/closing-down/">closing-down</option> <option value="https://github.blog/changelog/label/code/">code</option> <option value="https://github.blog/changelog/label/code-navigation/">code-navigation</option> <option value="https://github.blog/changelog/label/code-scanning/">code-scanning</option> <option value="https://github.blog/changelog/label/codeql/">codeql</option> <option value="https://github.blog/changelog/label/codesearch/">codesearch</option> <option value="https://github.blog/changelog/label/codespaces/">codespaces</option> <option value="https://github.blog/changelog/label/comments/">comments</option> <option value="https://github.blog/changelog/label/commits/">commits</option> <option value="https://github.blog/changelog/label/community/">community</option> <option value="https://github.blog/changelog/label/compliance/">compliance</option> <option value="https://github.blog/changelog/label/containers/">containers</option> <option value="https://github.blog/changelog/label/copilot/">copilot</option> <option value="https://github.blog/changelog/label/copilot-business/">copilot-business</option> <option value="https://github.blog/changelog/label/copilot-chat/">copilot-chat</option> <option value="https://github.blog/changelog/label/copilot-enterprise/">copilot-enterprise</option> <option value="https://github.blog/changelog/label/dark-mode/">dark-mode</option> <option value="https://github.blog/changelog/label/dependabot/">dependabot</option> <option value="https://github.blog/changelog/label/dependency-graph/">dependency-graph</option> <option value="https://github.blog/changelog/label/deployments/">deployments</option> <option value="https://github.blog/changelog/label/desktop/">desktop</option> <option value="https://github.blog/changelog/label/discussions/">discussions</option> <option value="https://github.blog/changelog/label/docs/">docs</option> <option value="https://github.blog/changelog/label/education/">education</option> <option value="https://github.blog/changelog/label/enterprise/">enterprise</option> <option value="https://github.blog/changelog/label/features/">features</option> <option value="https://github.blog/changelog/label/feed/">feed</option> <option value="https://github.blog/changelog/label/forks/">forks</option> <option value="https://github.blog/changelog/label/ghec/">ghec</option> <option value="https://github.blog/changelog/label/gists/">gists</option> <option value="https://github.blog/changelog/label/git/">git</option> <option value="https://github.blog/changelog/label/innersource/">innersource</option> <option value="https://github.blog/changelog/label/insights/">insights</option> <option value="https://github.blog/changelog/label/issues/">issues</option> <option value="https://github.blog/changelog/label/licensing/">licensing</option> <option value="https://github.blog/changelog/label/markdown/">markdown</option> <option value="https://github.blog/changelog/label/merge-queue/">merge-queue</option> <option value="https://github.blog/changelog/label/metrics/">metrics</option> <option value="https://github.blog/changelog/label/microsoft-teams-2/">microsoft-teams</option> <option value="https://github.blog/changelog/label/migrations/">migrations</option> <option value="https://github.blog/changelog/label/mobile/">mobile</option> <option value="https://github.blog/changelog/label/models/">models</option> <option value="https://github.blog/changelog/label/moderation/">moderation</option> <option value="https://github.blog/changelog/label/navigation/">navigation</option> <option value="https://github.blog/changelog/label/notifications/">notifications</option> <option value="https://github.blog/changelog/label/npm/">npm</option> <option value="https://github.blog/changelog/label/oidc/">oidc</option> <option value="https://github.blog/changelog/label/open-source/">open-source</option> <option value="https://github.blog/changelog/label/organizations/">organizations</option> <option value="https://github.blog/changelog/label/packages/">packages</option> <option value="https://github.blog/changelog/label/pages/">pages</option> <option value="https://github.blog/changelog/label/payments/">payments</option> <option value="https://github.blog/changelog/label/policies/">policies</option> <option value="https://github.blog/changelog/label/product/">product</option> <option value="https://github.blog/changelog/label/profile/">profile</option> <option value="https://github.blog/changelog/label/projects/">projects</option> <option value="https://github.blog/changelog/label/public-preview/">public-preview</option> <option value="https://github.blog/changelog/label/pull-requests/">pull-requests</option> <option value="https://github.blog/changelog/label/releases/">releases</option> <option value="https://github.blog/changelog/label/repos/">repos</option> <option value="https://github.blog/changelog/label/repositories/">repositories</option> <option value="https://github.blog/changelog/label/rules/">rules</option> <option value="https://github.blog/changelog/label/runners/">runners</option> <option value="https://github.blog/changelog/label/search/">search</option> <option value="https://github.blog/changelog/label/secret-scanning/">secret-scanning</option> <option value="https://github.blog/changelog/label/security/">security</option> <option value="https://github.blog/changelog/label/security-and-compliance/">security-and-compliance</option> <option value="https://github.blog/changelog/label/security-overview/">security-overview</option> <option value="https://github.blog/changelog/label/slack/">slack</option> <option value="https://github.blog/changelog/label/sponsors/">sponsors</option> <option value="https://github.blog/changelog/label/ssh/">ssh</option> <option value="https://github.blog/changelog/label/sunset/">sunset</option> <option value="https://github.blog/changelog/label/supply-chain/">supply-chain</option> <option value="https://github.blog/changelog/label/support/">support</option> <option value="https://github.blog/changelog/label/themes/">themes</option> <option value="https://github.blog/changelog/label/ui/">ui</option> <option value="https://github.blog/changelog/label/upload/">upload</option> <option value="https://github.blog/changelog/label/user-management/">user-management</option> <option value="https://github.blog/changelog/label/ux/">ux</option> <option value="https://github.blog/changelog/label/vs-code/">vs-code</option> <option value="https://github.blog/changelog/label/webhooks/">webhooks</option> <option value="https://github.blog/changelog/label/wikis/">wikis</option> <option value="https://github.blog/changelog/label/workflows/">workflows</option> </select> <nav id="changelog-categories" class="js-changelog-category-dropdown position-absolute mt-12px rounded-2 color-bg-default box-shadow-card-border-mktg pl-4 pr-3 py-3 z-3" style="text-transform: capitalize;" hidden> <div class="changelog-category-dropdown-content styled-scrollbar"> <a href="https://github.blog/changelog" class="d-block text-semibold Link--primary mb-12px mr-4">All categories</a> <a href="https://github.blog/changelog/label/2fa/" class="d-block text-semibold Link--primary mb-12px mr-4">2fa</a> <a href="https://github.blog/changelog/label/accessibility/" class="d-block text-semibold Link--primary mb-12px mr-4">accessibility</a> <a href="https://github.blog/changelog/label/actions/" class="d-block text-semibold Link--primary mb-12px mr-4">actions</a> <a href="https://github.blog/changelog/label/actions-importer/" class="d-block text-semibold Link--primary mb-12px mr-4">actions-importer</a> <a href="https://github.blog/changelog/label/admin/" class="d-block text-semibold Link--primary mb-12px mr-4">admin</a> <a href="https://github.blog/changelog/label/advanced-security/" class="d-block text-semibold Link--primary mb-12px mr-4">advanced-security</a> <a href="https://github.blog/changelog/label/advisory-database/" class="d-block text-semibold Link--primary mb-12px mr-4">advisory-database</a> <a href="https://github.blog/changelog/label/api/" class="d-block text-semibold Link--primary mb-12px mr-4 text-gradient-purple-coral">api</a> <a href="https://github.blog/changelog/label/apps/" class="d-block text-semibold Link--primary mb-12px mr-4">apps</a> <a href="https://github.blog/changelog/label/audit-log/" class="d-block text-semibold Link--primary mb-12px mr-4">audit-log</a> <a href="https://github.blog/changelog/label/authentication/" class="d-block text-semibold Link--primary mb-12px mr-4">authentication</a> <a href="https://github.blog/changelog/label/billing/" class="d-block text-semibold Link--primary mb-12px mr-4">billing</a> <a href="https://github.blog/changelog/label/branches/" class="d-block text-semibold Link--primary mb-12px mr-4">branches</a> <a href="https://github.blog/changelog/label/branchprotections/" class="d-block text-semibold Link--primary mb-12px mr-4">branchprotections</a> <a href="https://github.blog/changelog/label/brownout/" class="d-block text-semibold Link--primary mb-12px mr-4">brownout</a> <a href="https://github.blog/changelog/label/cache/" class="d-block text-semibold Link--primary mb-12px mr-4">cache</a> <a href="https://github.blog/changelog/label/chatops/" class="d-block text-semibold Link--primary mb-12px mr-4">chatops</a> <a href="https://github.blog/changelog/label/cli/" class="d-block text-semibold Link--primary mb-12px mr-4">cli</a> <a href="https://github.blog/changelog/label/closing-down/" class="d-block text-semibold Link--primary mb-12px mr-4">closing-down</a> <a href="https://github.blog/changelog/label/code/" class="d-block text-semibold Link--primary mb-12px mr-4">code</a> <a href="https://github.blog/changelog/label/code-navigation/" class="d-block text-semibold Link--primary mb-12px mr-4">code-navigation</a> <a href="https://github.blog/changelog/label/code-scanning/" class="d-block text-semibold Link--primary mb-12px mr-4">code-scanning</a> <a href="https://github.blog/changelog/label/codeql/" class="d-block text-semibold Link--primary mb-12px mr-4">codeql</a> <a href="https://github.blog/changelog/label/codesearch/" class="d-block text-semibold Link--primary mb-12px mr-4">codesearch</a> <a href="https://github.blog/changelog/label/codespaces/" class="d-block text-semibold Link--primary mb-12px mr-4">codespaces</a> <a href="https://github.blog/changelog/label/comments/" class="d-block text-semibold Link--primary mb-12px mr-4">comments</a> <a href="https://github.blog/changelog/label/commits/" class="d-block text-semibold Link--primary mb-12px mr-4">commits</a> <a href="https://github.blog/changelog/label/community/" class="d-block text-semibold Link--primary mb-12px mr-4">community</a> <a href="https://github.blog/changelog/label/compliance/" class="d-block text-semibold Link--primary mb-12px mr-4">compliance</a> <a href="https://github.blog/changelog/label/containers/" class="d-block text-semibold Link--primary mb-12px mr-4">containers</a> <a href="https://github.blog/changelog/label/copilot/" class="d-block text-semibold Link--primary mb-12px mr-4">copilot</a> <a href="https://github.blog/changelog/label/copilot-business/" class="d-block text-semibold Link--primary mb-12px mr-4">copilot-business</a> <a href="https://github.blog/changelog/label/copilot-chat/" class="d-block text-semibold Link--primary mb-12px mr-4">copilot-chat</a> <a href="https://github.blog/changelog/label/copilot-enterprise/" class="d-block text-semibold Link--primary mb-12px mr-4">copilot-enterprise</a> <a href="https://github.blog/changelog/label/dark-mode/" class="d-block text-semibold Link--primary mb-12px mr-4">dark-mode</a> <a href="https://github.blog/changelog/label/dependabot/" class="d-block text-semibold Link--primary mb-12px mr-4">dependabot</a> <a href="https://github.blog/changelog/label/dependency-graph/" class="d-block text-semibold Link--primary mb-12px mr-4">dependency-graph</a> <a href="https://github.blog/changelog/label/deployments/" class="d-block text-semibold Link--primary mb-12px mr-4">deployments</a> <a href="https://github.blog/changelog/label/desktop/" class="d-block text-semibold Link--primary mb-12px mr-4">desktop</a> <a href="https://github.blog/changelog/label/discussions/" class="d-block text-semibold Link--primary mb-12px mr-4">discussions</a> <a href="https://github.blog/changelog/label/docs/" class="d-block text-semibold Link--primary mb-12px mr-4">docs</a> <a href="https://github.blog/changelog/label/education/" class="d-block text-semibold Link--primary mb-12px mr-4">education</a> <a href="https://github.blog/changelog/label/enterprise/" class="d-block text-semibold Link--primary mb-12px mr-4">enterprise</a> <a href="https://github.blog/changelog/label/features/" class="d-block text-semibold Link--primary mb-12px mr-4">features</a> <a href="https://github.blog/changelog/label/feed/" class="d-block text-semibold Link--primary mb-12px mr-4">feed</a> <a href="https://github.blog/changelog/label/forks/" class="d-block text-semibold Link--primary mb-12px mr-4">forks</a> <a href="https://github.blog/changelog/label/ghec/" class="d-block text-semibold Link--primary mb-12px mr-4">ghec</a> <a href="https://github.blog/changelog/label/gists/" class="d-block text-semibold Link--primary mb-12px mr-4">gists</a> <a href="https://github.blog/changelog/label/git/" class="d-block text-semibold Link--primary mb-12px mr-4">git</a> <a href="https://github.blog/changelog/label/innersource/" class="d-block text-semibold Link--primary mb-12px mr-4">innersource</a> <a href="https://github.blog/changelog/label/insights/" class="d-block text-semibold Link--primary mb-12px mr-4">insights</a> <a href="https://github.blog/changelog/label/issues/" class="d-block text-semibold Link--primary mb-12px mr-4">issues</a> <a href="https://github.blog/changelog/label/licensing/" class="d-block text-semibold Link--primary mb-12px mr-4">licensing</a> <a href="https://github.blog/changelog/label/markdown/" class="d-block text-semibold Link--primary mb-12px mr-4">markdown</a> <a href="https://github.blog/changelog/label/merge-queue/" class="d-block text-semibold Link--primary mb-12px mr-4">merge-queue</a> <a href="https://github.blog/changelog/label/metrics/" class="d-block text-semibold Link--primary mb-12px mr-4">metrics</a> <a href="https://github.blog/changelog/label/microsoft-teams-2/" class="d-block text-semibold Link--primary mb-12px mr-4">microsoft-teams</a> <a href="https://github.blog/changelog/label/migrations/" class="d-block text-semibold Link--primary mb-12px mr-4">migrations</a> <a href="https://github.blog/changelog/label/mobile/" class="d-block text-semibold Link--primary mb-12px mr-4">mobile</a> <a href="https://github.blog/changelog/label/models/" class="d-block text-semibold Link--primary mb-12px mr-4">models</a> <a href="https://github.blog/changelog/label/moderation/" class="d-block text-semibold Link--primary mb-12px mr-4">moderation</a> <a href="https://github.blog/changelog/label/navigation/" class="d-block text-semibold Link--primary mb-12px mr-4">navigation</a> <a href="https://github.blog/changelog/label/notifications/" class="d-block text-semibold Link--primary mb-12px mr-4">notifications</a> <a href="https://github.blog/changelog/label/npm/" class="d-block text-semibold Link--primary mb-12px mr-4">npm</a> <a href="https://github.blog/changelog/label/oidc/" class="d-block text-semibold Link--primary mb-12px mr-4">oidc</a> <a href="https://github.blog/changelog/label/open-source/" class="d-block text-semibold Link--primary mb-12px mr-4">open-source</a> <a href="https://github.blog/changelog/label/organizations/" class="d-block text-semibold Link--primary mb-12px mr-4">organizations</a> <a href="https://github.blog/changelog/label/packages/" class="d-block text-semibold Link--primary mb-12px mr-4">packages</a> <a href="https://github.blog/changelog/label/pages/" class="d-block text-semibold Link--primary mb-12px mr-4">pages</a> <a href="https://github.blog/changelog/label/payments/" class="d-block text-semibold Link--primary mb-12px mr-4">payments</a> <a href="https://github.blog/changelog/label/policies/" class="d-block text-semibold Link--primary mb-12px mr-4">policies</a> <a href="https://github.blog/changelog/label/product/" class="d-block text-semibold Link--primary mb-12px mr-4">product</a> <a href="https://github.blog/changelog/label/profile/" class="d-block text-semibold Link--primary mb-12px mr-4">profile</a> <a href="https://github.blog/changelog/label/projects/" class="d-block text-semibold Link--primary mb-12px mr-4">projects</a> <a href="https://github.blog/changelog/label/public-preview/" class="d-block text-semibold Link--primary mb-12px mr-4">public-preview</a> <a href="https://github.blog/changelog/label/pull-requests/" class="d-block text-semibold Link--primary mb-12px mr-4">pull-requests</a> <a href="https://github.blog/changelog/label/releases/" class="d-block text-semibold Link--primary mb-12px mr-4">releases</a> <a href="https://github.blog/changelog/label/repos/" class="d-block text-semibold Link--primary mb-12px mr-4">repos</a> <a href="https://github.blog/changelog/label/repositories/" class="d-block text-semibold Link--primary mb-12px mr-4">repositories</a> <a href="https://github.blog/changelog/label/rules/" class="d-block text-semibold Link--primary mb-12px mr-4">rules</a> <a href="https://github.blog/changelog/label/runners/" class="d-block text-semibold Link--primary mb-12px mr-4">runners</a> <a href="https://github.blog/changelog/label/search/" class="d-block text-semibold Link--primary mb-12px mr-4">search</a> <a href="https://github.blog/changelog/label/secret-scanning/" class="d-block text-semibold Link--primary mb-12px mr-4">secret-scanning</a> <a href="https://github.blog/changelog/label/security/" class="d-block text-semibold Link--primary mb-12px mr-4">security</a> <a href="https://github.blog/changelog/label/security-and-compliance/" class="d-block text-semibold Link--primary mb-12px mr-4">security-and-compliance</a> <a href="https://github.blog/changelog/label/security-overview/" class="d-block text-semibold Link--primary mb-12px mr-4">security-overview</a> <a href="https://github.blog/changelog/label/slack/" class="d-block text-semibold Link--primary mb-12px mr-4">slack</a> <a href="https://github.blog/changelog/label/sponsors/" class="d-block text-semibold Link--primary mb-12px mr-4">sponsors</a> <a href="https://github.blog/changelog/label/ssh/" class="d-block text-semibold Link--primary mb-12px mr-4">ssh</a> <a href="https://github.blog/changelog/label/sunset/" class="d-block text-semibold Link--primary mb-12px mr-4">sunset</a> <a href="https://github.blog/changelog/label/supply-chain/" class="d-block text-semibold Link--primary mb-12px mr-4">supply-chain</a> <a href="https://github.blog/changelog/label/support/" class="d-block text-semibold Link--primary mb-12px mr-4">support</a> <a href="https://github.blog/changelog/label/themes/" class="d-block text-semibold Link--primary mb-12px mr-4">themes</a> <a href="https://github.blog/changelog/label/ui/" class="d-block text-semibold Link--primary mb-12px mr-4">ui</a> <a href="https://github.blog/changelog/label/upload/" class="d-block text-semibold Link--primary mb-12px mr-4">upload</a> <a href="https://github.blog/changelog/label/user-management/" class="d-block text-semibold Link--primary mb-12px mr-4">user-management</a> <a href="https://github.blog/changelog/label/ux/" class="d-block text-semibold Link--primary mb-12px mr-4">ux</a> <a href="https://github.blog/changelog/label/vs-code/" class="d-block text-semibold Link--primary mb-12px mr-4">vs-code</a> <a href="https://github.blog/changelog/label/webhooks/" class="d-block text-semibold Link--primary mb-12px mr-4">webhooks</a> <a href="https://github.blog/changelog/label/wikis/" class="d-block text-semibold Link--primary mb-12px mr-4">wikis</a> <a href="https://github.blog/changelog/label/workflows/" class="d-block text-semibold Link--primary mb-12px mr-4">workflows</a> </div> </nav> </form> </div> </div> <div class="js-ajax-root mt-md-7 mb-9 mb-md-12"> <div class="container-xl mx-auto p-responsive-blog js-ajax-landing"> <article id="changelog-83352" class="d-flex gutter-spacious flex-wrap position-relative changelog-line js-ajax-fetchable post-83352 changelog type-changelog status-publish hentry changelog-type-improvements changelog-label-api changelog-label-issues changelog-group-03-2025"> <div class="pb-4 pt-5 pt-md-7 col-12 col-md-5 position-relative"> <div class="changelog-single-details position-sticky top-12"> <svg class="octicon octicon-commit position-absolute left-0 color-bg-default color-fg-muted" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28"><path fill-rule="evenodd" d="M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" fill="currentColor"></path></svg> <h2 class="h5-mktg"><a class="Link--primary" href="https://github.blog/changelog/2025-03-18-github-issues-projects-rest-api-support-for-issue-types" rel="bookmark">GitHub Issues &amp; Projects: REST API support for issue types</a></h2> <time datetime="2025-03-18" class="d-block f5-mktg text-medium color-fg-muted mt-14px">March 18, 2025</time> <ul class="d-inline-block list-style-none post-hero__categories mt-2"><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/api/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">api</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/issues/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">issues</a></li></ul> </div> </div> <div class="col-12 col-md-7"> <div class="pb-5 pt-0 py-md-7 changelog-single-content-wrap border-bottom"> <div id="changelog-single-content-83352" class="post__content changelog-single-content js-show-all-target"> <p>Issue types can now be managed using the REST API, expanding the ability to automate and incorporate them in your workflows. Check out <a href="https://docs.github.com/en/rest/orgs/issue-types">our documentation on issue types</a> for more details. You can also review the examples below to get started.</p> <h2 id="managing-issue-types-for-the-organization">Managing issue types for the organization<a href="#managing-issue-types-for-the-organization" class="heading-link pl-2 text-italic text-bold" aria-label="Managing issue types for the organization"></a></h2> <p>You can create, update, delete, and list issue types for an organization.</p> <p>Creating a new issue type:</p> <pre><code>curl --request POST \ --url https://api.github.com/orgs/{org}/issue-types \ --header 'authorization: token &lt;YOUR-TOKEN&gt;' \ --header 'content-type: application/json' \ --data '{ "name": "Initiative", "description": "A large body of work that spans a quarter.", "color": "orange", "is_enabled": true }' </code></pre> <h2 id="adding-an-issue-type-to-an-issue">Adding an issue type to an issue<a href="#adding-an-issue-type-to-an-issue" class="heading-link pl-2 text-italic text-bold" aria-label="Adding an issue type to an issue"></a></h2> <p>You can specify the issue type when creating a new issue, or update it on an existing issue.</p> <p>Creating a new issue:</p> <pre><code>curl --request POST \ --url https://api.github.com/repos/{org}/{repo}/issues \ --header 'authorization: ' \ --header 'content-type: application/json' \ --data '{ "title": "Error when refreshing the settings page", "type": "Bug" }' </code></pre> <p>Updating an issue:</p> <pre><code> curl --request PATCH \ --url https://api.github.com/repos/{org}/{repo}/issues/{issue_number} \ --header 'authorization: ' \ --header 'content-type: application/json' \ --data '{ "type": "bug" }' </code></pre> <h2 id="searching-for-issues-by-issue-type">Searching for issues by issue type<a href="#searching-for-issues-by-issue-type" class="heading-link pl-2 text-italic text-bold" aria-label="Searching for issues by issue type"></a></h2> <p>You can search for issues by issue type at the repository or organization level.</p> <p>Searching within a repository:</p> <pre><code>curl --request GET \ --url 'https://api.github.com/repos/{org}/{repo}/issues?type=bug' \ --header 'authorization: ' </code></pre> <p>Join the discussion within <a href="https://github.com/orgs/community/discussions/categories/announcements">GitHub Community</a>.</p> <p>See how to use GitHub for project planning with <a href="https://github.com/features/issues">GitHub Issues</a>, check out what’s on the <a href="https://github.com/orgs/github/projects/4247/views/1">roadmap</a>, and learn more in the <a href="https://docs.github.com/en/issues">documentation</a>.</p> </div> <a href="https://github.blog/changelog/2025-03-18-github-issues-projects-rest-api-support-for-issue-types" role="button" class="Link--primary d-none d-md-inline-block mt-4 text-bold js-show-trigger" aria-expanded="false" aria-controls="changelog-single-content-83352"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> <a href="https://github.blog/changelog/2025-03-18-github-issues-projects-rest-api-support-for-issue-types" class="Link--primary d-inline-block d-md-none mt-4 text-bold js-show-trigger-alt"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> </div> </div> </article> <article id="changelog-83345" class="d-flex gutter-spacious flex-wrap position-relative changelog-line js-ajax-fetchable post-83345 changelog type-changelog status-publish hentry changelog-type-new-releases changelog-label-api changelog-label-enterprise changelog-label-security changelog-group-03-2025"> <div class="pb-4 pt-5 pt-md-7 col-12 col-md-5 position-relative"> <div class="changelog-single-details position-sticky top-12"> <svg class="octicon octicon-commit position-absolute left-0 color-bg-default color-fg-muted" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28"><path fill-rule="evenodd" d="M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" fill="currentColor"></path></svg> <h2 class="h5-mktg"><a class="Link--primary" href="https://github.blog/changelog/2025-03-18-fine-grained-pats-are-now-generally-available" rel="bookmark">Fine-grained PATs are now generally available</a></h2> <time datetime="2025-03-18" class="d-block f5-mktg text-medium color-fg-muted mt-14px">March 18, 2025</time> <ul class="d-inline-block list-style-none post-hero__categories mt-2"><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/api/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">api</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/enterprise/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">enterprise</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/security/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">security</a></li></ul> </div> </div> <div class="col-12 col-md-7"> <div class="pb-5 pt-0 py-md-7 changelog-single-content-wrap border-bottom"> <div id="changelog-single-content-83345" class="post__content changelog-single-content js-show-all-target"> <p>Fine-grained Personal Access Tokens (PATs) have been used by millions of users to make tens of billions of API calls over the last two years in public preview. In that time, we&#8217;ve added requested features such as <a href="https://github.blog/changelog/2023-03-24-organization-apis-for-fine-grained-pats-management">management APIs and webhooks</a>, <a href="https://github.blog/changelog/2024-10-18-new-pat-rotation-policies-preview-and-optional-expiration-for-fine-grained-pats/">mandatory expiration policies</a>, and <a href="https://github.blog/changelog/2023-08-10-x-accepted-github-permissions-header-for-fine-grained-permission-actors/">usability improvements</a>.</p> <p>However, feedback has been clear on one item in particular &#8211; while fine-grained PATs solve a significant set of challenges in their current state, many organizations cannot fully adopt them due to the lack of support statements and the risk of breaking changes while they&#8217;re in public preview. Our goal at GitHub is to ensure that everyone can secure their workflows as best they can, which is why we&#8217;re graduating fine-grained PATs to a generally available (GA) state.</p> <h3 id="changes-with-this-release">Changes with this release<a href="#changes-with-this-release" class="heading-link pl-2 text-italic text-bold" aria-label="Changes with this release"></a></h3> <p>This update brings two major changes to PATs at GitHub. Most notably, fine-grained PATs are now enabled by default for all organizations on GitHub, unless that organization or enterprise explicitly disabled them during the preview. The PAT approval flow is also enabled by default, so developers must request organization owner approval in order to successfully use their fine-grained PAT against their organizations.</p> <p>We&#8217;re also updating the release state for both fine-grained PATs and PAT expiration policies. These features are now fully supported by GitHub and adhere to the same breaking change policies as the rest of the product. While there are some scenarios where fine-grained PATs are not yet supported, your organization should be confident in suggesting, or even requiring, the use of these more secure tokens.</p> <p>Administrators, auditors, and security teams can also look for improved auditability of PATs &#8211; the <code>token_id</code> is now included in all API calls and supported as a built-in filter in the audit logs. With this filter, you can now easily track the use of a token throughout your enterprise or organization.</p> <p><img decoding="async" loading="lazy" alt="A screenshot of enterprise audit logs, filtered to a specific token_id" src="https://github.com/user-attachments/assets/c3eb83c3-2d4b-449d-b88b-fef55119db3a" /></p> <p>Customers on GHES should expect these changes to arrive in version 3.17.</p> <h3 id="feature-gaps-in-fine-grained-pats">Feature gaps in fine-grained PATs<a href="#feature-gaps-in-fine-grained-pats" class="heading-link pl-2 text-italic text-bold" aria-label="Feature gaps in fine-grained PATs"></a></h3> <p>There are several scenarios where fine-grained PATs are not a suitable solution at this time. GitHub continues to invest in building more secure access patterns and will implement these capabilities over time. You can track our progress and goals on our <a href="https://github.com/github/roadmap">public roadmap</a>. The most notable scenarios are:</p> <ul> <li>Calling APIs that manage the Enterprise object (e.g. SCIM APIs or creating organizations)</li> <li>Accessing multiple organizations with a single token</li> <li>Contributing to repositories where you&#8217;re an outside collaborator or an unaffiliated open source contributor</li> <li>Accessing <code>internal</code> repositories in your enterprise, outside of a targeted organization</li> <li>Calling the <code>Packages</code> and <code>Checks</code> APIs</li> </ul> <p>We&#8217;re currently focused on implementing enterprise access for GitHub Apps and fine-grained PATs so that enterprise owners can reduce the over-permissioning of their current automation solutions. After that, we&#8217;ll continue to invest in this area with a goal of enabling organizations to eventually disable the use of PATs (Classic) for their resources.</p> <p>To learn more about fine-grained PATs and how your organization can control them, see our documentation on <a href="https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens">managing your personal access tokens</a>, and <a href="https://docs.github.com/en/enterprise-cloud@latest/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-personal-access-tokens-in-your-enterprise">enforcing policies for PATs in your enterprise</a>.</p> </div> <a href="https://github.blog/changelog/2025-03-18-fine-grained-pats-are-now-generally-available" role="button" class="Link--primary d-none d-md-inline-block mt-4 text-bold js-show-trigger" aria-expanded="false" aria-controls="changelog-single-content-83345"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> <a href="https://github.blog/changelog/2025-03-18-fine-grained-pats-are-now-generally-available" class="Link--primary d-inline-block d-md-none mt-4 text-bold js-show-trigger-alt"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> </div> </div> </article> <article id="changelog-83123" class="d-flex gutter-spacious flex-wrap position-relative changelog-line js-ajax-fetchable post-83123 changelog type-changelog status-publish hentry changelog-type-improvements changelog-label-api changelog-label-issues changelog-label-projects changelog-group-03-2025"> <div class="pb-4 pt-5 pt-md-7 col-12 col-md-5 position-relative"> <div class="changelog-single-details position-sticky top-12"> <svg class="octicon octicon-commit position-absolute left-0 color-bg-default color-fg-muted" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28"><path fill-rule="evenodd" d="M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" fill="currentColor"></path></svg> <h2 class="h5-mktg"><a class="Link--primary" href="https://github.blog/changelog/2025-03-06-github-issues-projects-api-support-for-issues-advanced-search-and-more" rel="bookmark">GitHub Issues &amp; Projects: API support for issues advanced search and more!</a></h2> <time datetime="2025-03-06" class="d-block f5-mktg text-medium color-fg-muted mt-14px">March 6, 2025</time> <ul class="d-inline-block list-style-none post-hero__categories mt-2"><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/api/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">api</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/issues/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">issues</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/projects/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">projects</a></li></ul> </div> </div> <div class="col-12 col-md-7"> <div class="pb-5 pt-0 py-md-7 changelog-single-content-wrap border-bottom"> <div id="changelog-single-content-83123" class="post__content changelog-single-content js-show-all-target"> <p>Today&#8217;s changelog announces API support for issues advanced search, timeline events for issue types, and an update on issue types settings.</p> <h2 id="api-support-for-issues-advanced-search"><g-emoji fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f50d.png?v8" alias="mag">&#128269;</g-emoji> API support for issues advanced search<a href="#api-support-for-issues-advanced-search" class="heading-link pl-2 text-italic text-bold" aria-label="&lt;g-emoji fallback-src=&quot;https://github.githubassets.com/images/icons/emoji/unicode/1f50d.png?v8&quot; alias=&quot;mag&quot;&gt;&#128269;&lt;/g-emoji&gt; API support for issues advanced search"></a></h2> <p>You can now use GraphQL and the REST API to perform <a href="https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/filtering-and-searching-issues-and-pull-requests#building-advanced-filters-for-issues">advanced queries for issues</a> using the <code>AND</code> and <code>OR</code> keywords and nested searches.</p> <p>For the REST API, you can set the <code>advanced_search</code> parameter to <code>true</code>. Check out the <a href="https://docs.github.com/en/rest/search/search?apiVersion=2022-11-28#search-issues-and-pull-requests">REST API documentation</a> for more details.</p> <pre><code>http://api.github.com/search/issues?q={query}&amp;advanced_search=true </code></pre> <p>For GraphQL, you can use the <code>ISSUE_ADVANCED</code> type. Check out the <a href="https://docs.github.com/en/graphql/reference/queries#search">GraphQL documentation</a> for more details.</p> <pre><code>query { search(query: "is:issue AND assignee:@me AND (label:support OR comments:&gt;5)", type: ISSUE_ADVANCED, first: 10) { nodes { ... on Node { id } } issueCount } } </code></pre> <p>Note that on <strong>September 4, 2025</strong>, all issue queries will use advanced search by default. This means that after this date:</p> <ul> <li>You will no longer need to use the <code>advanced_search</code> parameter for the REST API.</li> <li>The <code>ISSUE</code> GraphQL type will support advanced search.</li> </ul> <h2 id="timeline-events-for-issue-types"><g-emoji fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f550.png?v8" alias="clock1">&#128336;</g-emoji> Timeline events for issue types<a href="#timeline-events-for-issue-types" class="heading-link pl-2 text-italic text-bold" aria-label="&lt;g-emoji fallback-src=&quot;https://github.githubassets.com/images/icons/emoji/unicode/1f550.png?v8&quot; alias=&quot;clock1&quot;&gt;&#128336;&lt;/g-emoji&gt; Timeline events for issue types"></a></h2> <p>You can now see events in the issue timeline when issue types are added, updated, and removed from an issue.</p> <p><img decoding="async" loading="lazy" src="https://github.com/user-attachments/assets/e09554fb-fdc5-4b5e-a19b-94518edfcc5c" alt="issue type timeline event" /></p> <h2 id="%f0%9f%8c%87-issue-types-for-private-repositories-only-will-be-retired">🌇 Issue types for private repositories only will be retired<a href="#%f0%9f%8c%87-issue-types-for-private-repositories-only-will-be-retired" class="heading-link pl-2 text-italic text-bold" aria-label="🌇 Issue types for private repositories only will be retired"></a></h2> <p>We are retiring the “Private repositories only” setting for issue types. Over the next week, you will no longer be allowed select this setting to specify an issue type for use only in private repositories. All existing issue types with this setting selected that are marked as <code>Private</code> will be removed on <b data-stringify-type="bold">March 26, 2025</b>.</p> <p>In order to continue using these issue types, you will need to unselect the &#8220;Private repositories only&#8221; setting in the <a href="https://docs.github.com/en/issues/tracking-your-work-with-issues/configuring-issues/managing-issue-types-in-an-organization#making-changes-to-issue-types">issue types organization settings page</a> before this date. They can then be edited, disabled, or deleted as needed.</p> <p><img decoding="async" loading="lazy" src="https://github.com/user-attachments/assets/47b296be-e8f7-4788-9d3f-8aaa891ceeff" alt="issue types settings" /></p> <h2 id="tell-us-what-you-think"><g-emoji fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/270d.png?v8" alias="writing_hand">&#9997;</g-emoji> Tell us what you think!<a href="#tell-us-what-you-think" class="heading-link pl-2 text-italic text-bold" aria-label="&lt;g-emoji fallback-src=&quot;https://github.githubassets.com/images/icons/emoji/unicode/270d.png?v8&quot; alias=&quot;writing_hand&quot;&gt;&#9997;&lt;/g-emoji&gt; Tell us what you think!"></a></h2> <p>Join the discussion within the <a href="https://github.com/orgs/community/discussions/categories/announcements">GitHub Community</a>.</p> <p>See how to use GitHub for project planning with <a href="https://github.com/features/issues">GitHub Issues</a>, check out what’s on the <a href="https://github.com/orgs/github/projects/4247/views/1">roadmap</a>, and learn more in the <a href="https://docs.github.com/en/issues">documentation</a>.</p> </div> <a href="https://github.blog/changelog/2025-03-06-github-issues-projects-api-support-for-issues-advanced-search-and-more" role="button" class="Link--primary d-none d-md-inline-block mt-4 text-bold js-show-trigger" aria-expanded="false" aria-controls="changelog-single-content-83123"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> <a href="https://github.blog/changelog/2025-03-06-github-issues-projects-api-support-for-issues-advanced-search-and-more" class="Link--primary d-inline-block d-md-none mt-4 text-bold js-show-trigger-alt"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> </div> </div> </article> <article id="changelog-82848" class="d-flex gutter-spacious flex-wrap position-relative changelog-line js-ajax-fetchable post-82848 changelog type-changelog status-publish hentry changelog-type-improvements changelog-label-advanced-security changelog-label-api changelog-label-secret-scanning changelog-label-security-and-compliance changelog-group-02-2025"> <div class="pb-4 pt-5 pt-md-7 col-12 col-md-5 position-relative"> <div class="changelog-single-details position-sticky top-12"> <svg class="octicon octicon-commit position-absolute left-0 color-bg-default color-fg-muted" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28"><path fill-rule="evenodd" d="M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" fill="currentColor"></path></svg> <h2 class="h5-mktg"><a class="Link--primary" href="https://github.blog/changelog/2025-02-26-manage-push-protection-bypass-requests-for-secret-scanning-with-the-rest-api" rel="bookmark">Manage push protection bypass requests for secret scanning with the REST API</a></h2> <time datetime="2025-02-27" class="d-block f5-mktg text-medium color-fg-muted mt-14px">February 27, 2025</time> <ul class="d-inline-block list-style-none post-hero__categories mt-2"><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/advanced-security/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">advanced-security</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/api/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">api</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/secret-scanning/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">secret-scanning</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/security-and-compliance/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">security-and-compliance</a></li></ul> </div> </div> <div class="col-12 col-md-7"> <div class="pb-5 pt-0 py-md-7 changelog-single-content-wrap border-bottom"> <div id="changelog-single-content-82848" class="post__content changelog-single-content js-show-all-target"> <p>Push protection for secret scanning blocks any push that contains a secret. By default, this block can be bypassed, which results in a secret scanning alert in the repository. Delegated bypass controls let you choose who is allowed to bypass push protection, and contributors without permissions to bypass must submit a request for approval by the listed reviewers. These controls can reduce the risk of secrets being accidentally exposed in your codebase.</p> <p>Managing bypass requests is now available with the REST API, offering flexibility for triaging and reviewing by integrating with your existing workflows.</p> <p>Reviewers can retrieve bypass requests for an organization or repository with the following endpoints:</p> <ul> <li><a href="https://docs.github.com/enterprise-cloud@latest/rest/secret-scanning/delegated-bypass?apiVersion=2022-11-28#list-bypass-requests-for-secret-scanning-for-an-org"><code>GET /orgs/{org}/bypass-requests/secret-scanning</code></a></li> <li><a href="https://docs.github.com/enterprise-cloud@latest/rest/secret-scanning/delegated-bypass?apiVersion=2022-11-28#list-bypass-requests-for-secret-scanning-for-a-repository"><code>GET /repos/{owner}/{repo}/bypass-requests/secret-scanning</code></a></li> <li><a href="https://docs.github.com/enterprise-cloud@latest/rest/secret-scanning/delegated-bypass?apiVersion=2022-11-28#get-a-bypass-request-for-secret-scanning"><code>GET /repos/{owner}/{repo}/bypass-requests/secret-scanning/{bypass_request_number}</code></a></li> </ul> <p>Reviewers can review a request and dismiss a response to a request with the following endpoints:</p> <ul> <li><a href="https://docs.github.com/enterprise-cloud@latest/rest/secret-scanning/delegated-bypass?apiVersion=2022-11-28#review-a-bypass-request-for-secret-scanning"><code>PATCH /repos/{owner}/{repo}/bypass-requests/secret-scanning/{bypass_request_number}</code></a></li> <li><a href="https://docs.github.com/enterprise-cloud@latest/rest/secret-scanning/delegated-bypass?apiVersion=2022-11-28#dismiss-a-response-on-a-bypass-request-for-secret-scanning"><code>DELETE /repos/{owner}/{repo}/bypass-responses/secret-scanning/{bypass_response_id}</code></a></li> </ul> <p>Learn more about how to secure your repositories with <a href="https://docs.github.com/enterprise-cloud@latest/code-security/secret-scanning">secret scanning</a> and <a href="https://docs.github.com/enterprise-cloud@latest/code-security/secret-scanning/push-protection-for-repositories-and-organizations">push protection</a>.</p> </div> <a href="https://github.blog/changelog/2025-02-26-manage-push-protection-bypass-requests-for-secret-scanning-with-the-rest-api" role="button" class="Link--primary d-none d-md-inline-block mt-4 text-bold js-show-trigger" aria-expanded="false" aria-controls="changelog-single-content-82848"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> <a href="https://github.blog/changelog/2025-02-26-manage-push-protection-bypass-requests-for-secret-scanning-with-the-rest-api" class="Link--primary d-inline-block d-md-none mt-4 text-bold js-show-trigger-alt"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> </div> </div> </article> <article id="changelog-82750" class="d-flex gutter-spacious flex-wrap position-relative changelog-line js-ajax-fetchable post-82750 changelog type-changelog status-publish hentry changelog-type-deprecations changelog-label-api changelog-label-copilot changelog-group-02-2025"> <div class="pb-4 pt-5 pt-md-7 col-12 col-md-5 position-relative"> <div class="changelog-single-details position-sticky top-12"> <svg class="octicon octicon-commit position-absolute left-0 color-bg-default color-fg-muted" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28"><path fill-rule="evenodd" d="M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" fill="currentColor"></path></svg> <h2 class="h5-mktg"><a class="Link--primary" href="https://github.blog/changelog/2025-02-21-deprecation-of-beta-github-copilot-usage-api-endpoint" rel="bookmark">Deprecation of beta GitHub Copilot usage API endpoint</a></h2> <time datetime="2025-02-21" class="d-block f5-mktg text-medium color-fg-muted mt-14px">February 21, 2025</time> <ul class="d-inline-block list-style-none post-hero__categories mt-2"><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/api/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">api</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/copilot/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">copilot</a></li></ul> </div> </div> <div class="col-12 col-md-7"> <div class="pb-5 pt-0 py-md-7 changelog-single-content-wrap border-bottom"> <div id="changelog-single-content-82750" class="post__content changelog-single-content js-show-all-target"> <p>Beginning February 2025, the beta Copilot <code>/usage</code> <a href="https://docs.github.com/en/rest/copilot/copilot-usage?apiVersion=2022-11-28">endpoints</a> will be deprecated.<br /> No new data will be inserted for retrieval via the beta <code>/usage</code> endpoints. This endpoint will be accessible through February, but the 28 day retention policy will remain.</p> <h3 id="whos-impacted">Who&#8217;s impacted?<a href="#whos-impacted" class="heading-link pl-2 text-italic text-bold" aria-label="Who&#8217;s impacted?"></a></h3> <p>Enterprise organizations with Copilot licenses not yet migrated from the <code>/usage</code> metrics APIs are impacted by this deprecation.</p> <h3 id="whats-changing-and-why">What&#8217;s changing and why?<a href="#whats-changing-and-why" class="heading-link pl-2 text-italic text-bold" aria-label="What&#8217;s changing and why?"></a></h3> <p>The deprecation of the beta <code>/usage</code> endpoints is a part of GitHub’s effort to deliver more powerful and flexible data offerings for enterprises, organizations, and teams. The new endpoints provide:</p> <ul> <li>Visibility into the adoption and consumption of Copilot across various stages of dev lifecycle (from code suggestions to PR reviews), from the team to the enterprise level</li> <li>Expanded scope of metrics, with the addition of GitHub.com Copilot Chat and Copilot for Pull Requests</li> <li>Consistent terminology with the user management API</li> <li>Better visibility into unique users at various drilldowns</li> </ul> <h3 id="next-steps">Next steps<a href="#next-steps" class="heading-link pl-2 text-italic text-bold" aria-label="Next steps"></a></h3> <p>Ensure your organization is no longer consuming the now deprecated <code>/usage</code> endpoints in any jobs, workflows, and analytics tools.<br /> As an alternative to the beta Copilot <code>/usage</code> endpoints, check out the <a href="https://appsource.microsoft.com/en-us/product/power-bi/github.github-copilot-metrics?tab=Overview">PowerBI template</a> and the Copilot <code>/metrics</code> <a href="https://docs.github.com/en/rest/copilot/copilot-metrics?apiVersion=2022-11-28">endpoints</a>.</p> <p>Join the discussion in the <a href="https://github.com/orgs/community/discussions/141071">GitHub community</a>.</p> </div> <a href="https://github.blog/changelog/2025-02-21-deprecation-of-beta-github-copilot-usage-api-endpoint" role="button" class="Link--primary d-none d-md-inline-block mt-4 text-bold js-show-trigger" aria-expanded="false" aria-controls="changelog-single-content-82750"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> <a href="https://github.blog/changelog/2025-02-21-deprecation-of-beta-github-copilot-usage-api-endpoint" class="Link--primary d-inline-block d-md-none mt-4 text-bold js-show-trigger-alt"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> </div> </div> </article> <article id="changelog-82668" class="d-flex gutter-spacious flex-wrap position-relative changelog-line js-ajax-fetchable post-82668 changelog type-changelog status-publish hentry changelog-type-improvements changelog-label-api changelog-label-issues changelog-label-projects changelog-group-02-2025"> <div class="pb-4 pt-5 pt-md-7 col-12 col-md-5 position-relative"> <div class="changelog-single-details position-sticky top-12"> <svg class="octicon octicon-commit position-absolute left-0 color-bg-default color-fg-muted" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28"><path fill-rule="evenodd" d="M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" fill="currentColor"></path></svg> <h2 class="h5-mktg"><a class="Link--primary" href="https://github.blog/changelog/2025-02-18-github-issues-projects-february-18th-update" rel="bookmark">GitHub Issues &amp; Projects – February 18th update</a></h2> <time datetime="2025-02-18" class="d-block f5-mktg text-medium color-fg-muted mt-14px">February 18, 2025</time> <ul class="d-inline-block list-style-none post-hero__categories mt-2"><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/api/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">api</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/issues/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">issues</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/projects/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">projects</a></li></ul> </div> </div> <div class="col-12 col-md-7"> <div class="pb-5 pt-0 py-md-7 changelog-single-content-wrap border-bottom"> <div id="changelog-single-content-82668" class="post__content changelog-single-content js-show-all-target"> <p>Today&#8217;s changelog brings you a snappier issue creation flow in projects, the ability to convert checklist items to sub-issues, required fields on private repositories, and important updates on tasklist blocks and single issue templates.</p> <h2 id="%e2%9c%8d%ef%b8%8f-improved-issue-creation-flow-in-projects">✍️ Improved issue creation flow in projects<a href="#%e2%9c%8d%ef%b8%8f-improved-issue-creation-flow-in-projects" class="heading-link pl-2 text-italic text-bold" aria-label="✍️ Improved issue creation flow in projects"></a></h2> <p>Creating a new issue from a project is now easier than ever. Previously, when you started typing in an issue title in a project, the default was to create a draft issue. However, we’ve heard from user feedback that the primary<br /> desired use case is to create an issue instead of a draft. Now, with this update, you can directly create a new issue by pressing <code>Enter</code> or create a draft with <code>Cmd / Ctrl + Enter</code>.</p> <div style="width: 1640px;" class="wp-video"><!--[if lt IE 9]><script>document.createElement('video');</script><![endif]--> <video class="wp-video-shortcode" id="video-82668-1" width="1640" height="1080" preload="metadata" controls="controls"><source type="video/mp4" src="https://github.blog/wp-content/uploads/2025/02/new-issue.mp4#t=0.001?_=1" /><a href="https://github.blog/wp-content/uploads/2025/02/new-issue.mp4#t=0.001">https://github.blog/wp-content/uploads/2025/02/new-issue.mp4#t=0.001</a></video></div> <h2 id="%f0%9f%94%92-required-fields-on-issue-forms-for-private-repositories">🔒 Required fields on issue forms for private repositories<a href="#%f0%9f%94%92-required-fields-on-issue-forms-for-private-repositories" class="heading-link pl-2 text-italic text-bold" aria-label="🔒 Required fields on issue forms for private repositories"></a></h2> <p>You can now specify <a href="https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms#about-yaml-syntax-for-issue-forms">required fields</a> on issue forms in private repositories, which ensures that contributors provide essential information before submitting an issue.</p> <div style="width: 1640px;" class="wp-video"><video class="wp-video-shortcode" id="video-82668-2" width="1640" height="1080" preload="metadata" controls="controls"><source type="video/mp4" src="https://github.blog/wp-content/uploads/2025/02/required_fields.mp4#t=0.001?_=2" /><a href="https://github.blog/wp-content/uploads/2025/02/required_fields.mp4#t=0.001">https://github.blog/wp-content/uploads/2025/02/required_fields.mp4#t=0.001</a></video></div> <h2 id="%e2%9e%a1%ef%b8%8f-convert-checklist-items-to-sub-issues">➡️ Convert checklist items to sub-issues<a href="#%e2%9e%a1%ef%b8%8f-convert-checklist-items-to-sub-issues" class="heading-link pl-2 text-italic text-bold" aria-label="➡️ Convert checklist items to sub-issues"></a></h2> <p>You can now convert checklist items in issues directly to sub-issues, making it easier to turn draft or to-do tasks into actionable work items.</p> <div style="width: 1640px;" class="wp-video"><video class="wp-video-shortcode" id="video-82668-3" width="1640" height="1080" preload="metadata" controls="controls"><source type="video/mp4" src="https://github.blog/wp-content/uploads/2025/02/convertsub-issue.mp4#t=0.001?_=3" /><a href="https://github.blog/wp-content/uploads/2025/02/convertsub-issue.mp4#t=0.001">https://github.blog/wp-content/uploads/2025/02/convertsub-issue.mp4#t=0.001</a></video></div> <h2 id="%f0%9f%8c%87-tasklist-blocks-will-be-retired-and-replaced-with-sub-issues">🌇 Tasklist blocks will be retired and replaced with sub-issues<a href="#%f0%9f%8c%87-tasklist-blocks-will-be-retired-and-replaced-with-sub-issues" class="heading-link pl-2 text-italic text-bold" aria-label="🌇 Tasklist blocks will be retired and replaced with sub-issues"></a></h2> <p>The private preview feature, tasklist blocks, will be retired on <strong>April 30, 2025</strong>. Your feedback from the private preview has been invaluable, helping us shape the release of <a href="https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/adding-sub-issues">sub-issues</a>, the replacement for tasklist blocks.</p> <p>Sub-issues provide a dedicated section within each issue, making it easier to track related work without relying on Markdown. You can manage up to eight levels of hierarchy within a single issue and monitor progress directly in your projects.</p> <h3 id="migrate-to-sub-issues">Migrate to sub-issues<a href="#migrate-to-sub-issues" class="heading-link pl-2 text-italic text-bold" aria-label="Migrate to sub-issues"></a></h3> <p>We recommend migrating your tasklists to sub-issues before the retirement date.</p> <p>To migrate, first simply remove the tasklist Markdown syntax to display the list as an issue checklist.</p> <pre><code class="language-diff">- ```[tasklist] - - [ ] task 1 - - [ ] https://github.com/github/github/issues/123 - ``` + - [ ] task 1 + - [ ] https://github.com/github/github/issues/123 </code></pre> <p>Then, use the <code>Convert to sub-issue</code> feature to convert desired issues or checklist items into sub-issues.</p> <p>After April 30, 2025, remaining tasklist blocks will no longer be rendered and will instead be converted to raw Markdown. The <code>Tracked</code> and <code>Tracked by</code> fields on projects will no longer be available.</p> <h2 id="%f0%9f%8c%85-single-issue-templates-issue_template-md-will-be-retired">🌅 Single issue templates (ISSUE_TEMPLATE.md) will be retired<a href="#%f0%9f%8c%85-single-issue-templates-issue_template-md-will-be-retired" class="heading-link pl-2 text-italic text-bold" aria-label="🌅 Single issue templates (ISSUE_TEMPLATE.md) will be retired"></a></h2> <p>The legacy <code>ISSUE_TEMPLATE.md</code> feature will be retired on <strong>March 30, 2025</strong>. As a replacement, we encourage creating an <code>ISSUE_TEMPLATE/</code> subdirectory in any of the supported folders to store multiple issue templates. You can then use the template query parameter to specify which template should populate the issue body. For more details, see <a href="https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/about-issue-and-pull-request-templates">the documentation</a>.</p> <p>After March 30, 2025, repositories still using <code>ISSUE_TEMPLATE.md</code> will default to a blank issue form, allowing users to start fresh when creating issues.</p> <h2 id="additional-improvements"><g-emoji fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2728.png?v8" alias="sparkles">&#10024;</g-emoji> Additional improvements<a href="#additional-improvements" class="heading-link pl-2 text-italic text-bold" aria-label="&lt;g-emoji fallback-src=&quot;https://github.githubassets.com/images/icons/emoji/unicode/2728.png?v8&quot; alias=&quot;sparkles&quot;&gt;&#10024;&lt;/g-emoji&gt; Additional improvements"></a></h2> <p>On top of the many bug fixes we&#8217;ve shipped, we&#8217;ve also introduced the following improvements:</p> <ul> <li>You can now create new milestones directly from the milestone picker in any issue.</li> <li>The issue template selection will now be bypassed if only one template is available and the blank issue template is disabled.</li> <li>You can now create and edit iteration fields via the <a href="https://docs.github.com/en/graphql/reference/input-objects#updateprojectv2fieldinput">ProjectV2 GraphQL API</a>.</li> <li>We’ve introduced a move dialog in Projects, allowing you to rearrange items and views with precision. You can move views from a tab’s view options menu, while items can be moved through the row actions menu. This allows users who rely on screen readers, keyboards, and other assistive technology to use projects more accessibly.</li> </ul> <h2 id="tell-us-what-you-think"><g-emoji fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/270d.png?v8" alias="writing_hand">&#9997;</g-emoji> Tell us what you think!<a href="#tell-us-what-you-think" class="heading-link pl-2 text-italic text-bold" aria-label="&lt;g-emoji fallback-src=&quot;https://github.githubassets.com/images/icons/emoji/unicode/270d.png?v8&quot; alias=&quot;writing_hand&quot;&gt;&#9997;&lt;/g-emoji&gt; Tell us what you think!"></a></h2> <p>Join the discussion within the <a href="https://github.com/orgs/community/discussions/categories/announcements">GitHub Community</a>.</p> <p>See how to use GitHub for project planning with <a href="https://github.com/features/issues">GitHub Issues</a>, check out what’s on the <a href="https://github.com/orgs/github/projects/4247/views/1">roadmap</a>, and learn more in the <a href="https://docs.github.com/en/issues">documentation</a>.</p> </div> <a href="https://github.blog/changelog/2025-02-18-github-issues-projects-february-18th-update" role="button" class="Link--primary d-none d-md-inline-block mt-4 text-bold js-show-trigger" aria-expanded="false" aria-controls="changelog-single-content-82668"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> <a href="https://github.blog/changelog/2025-02-18-github-issues-projects-february-18th-update" class="Link--primary d-inline-block d-md-none mt-4 text-bold js-show-trigger-alt"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> </div> </div> </article> <article id="changelog-82397" class="d-flex gutter-spacious flex-wrap position-relative changelog-line js-ajax-fetchable post-82397 changelog type-changelog status-publish hentry changelog-type-deprecations changelog-label-actions changelog-label-api changelog-label-billing changelog-label-closing-down changelog-group-02-2025"> <div class="pb-4 pt-5 pt-md-7 col-12 col-md-5 position-relative"> <div class="changelog-single-details position-sticky top-12"> <svg class="octicon octicon-commit position-absolute left-0 color-bg-default color-fg-muted" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28"><path fill-rule="evenodd" d="M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" fill="currentColor"></path></svg> <h2 class="h5-mktg"><a class="Link--primary" href="https://github.blog/changelog/2025-02-02-actions-get-workflow-usage-and-get-workflow-run-usage-endpoints-closing-down" rel="bookmark">Actions Get workflow usage and Get workflow run usage endpoints closing down</a></h2> <time datetime="2025-02-02" class="d-block f5-mktg text-medium color-fg-muted mt-14px">February 2, 2025</time> <ul class="d-inline-block list-style-none post-hero__categories mt-2"><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/actions/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">actions</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/api/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">api</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/billing/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">billing</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/closing-down/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">closing-down</a></li></ul> </div> </div> <div class="col-12 col-md-7"> <div class="pb-5 pt-0 py-md-7 changelog-single-content-wrap border-bottom"> <div id="changelog-single-content-82397" class="post__content changelog-single-content js-show-all-target"> <p>As part of the ongoing transition of <a href="https://github.blog/changelog/2024-09-24-enhanced-billing-platform-for-enterprises/">Enterprise customers</a> and Team plan customers to our new billing platform, the Actions <a href="https://docs.github.com/en/rest/actions/workflows?apiVersion=2022-11-28#get-workflow-usage">Get workflow usage</a> and <a href="https://docs.github.com/en/rest/actions/workflow-runs?apiVersion=2022-11-28#get-workflow-run-usage">Get workflow run usage</a> endpoints will be closing down. The transition of Enterprise and Team plan customers to the new billing platform will complete by April 1, 2025.</p> <p>Actions usage information is available via the billing platform <a href="https://docs.github.com/en/enterprise-cloud@latest/rest/enterprise-admin/billing?apiVersion=2022-11-28#get-billing-usage-report-for-an-enterprise">usage endpoint</a>. This endpoint summarizes Actions usage by SKU, organization, and repository, however it does not provide detailed workflow information. For more information, refer to <a href="https://docs.github.com/en/enterprise-cloud@latest/billing/using-the-new-billing-platform/automating-usage-reporting#getting-github-actions-billing-data-from-the-new-response-data">Getting GitHub Actions billing data from the new response data</a>.</p> <p>On the new billing platform, workflow information is available in the usage report, which can be requested from the usage page. For more information, refer to <a href="https://docs.github.com/en/enterprise-cloud@latest/billing/using-the-new-billing-platform/gathering-insights-on-your-spending#viewing-usage">Viewing usage</a>.</p> <p>Learn more <a href="https://docs.github.com/billing/using-the-new-billing-platform/about-the-new-billing-platform">about the new billing platform</a> or share feedback on this change in the community <a href="https://gh.io/actions-workflow-usage-closing-down">discussion</a>.</p> </div> <a href="https://github.blog/changelog/2025-02-02-actions-get-workflow-usage-and-get-workflow-run-usage-endpoints-closing-down" role="button" class="Link--primary d-none d-md-inline-block mt-4 text-bold js-show-trigger" aria-expanded="false" aria-controls="changelog-single-content-82397"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> <a href="https://github.blog/changelog/2025-02-02-actions-get-workflow-usage-and-get-workflow-run-usage-endpoints-closing-down" class="Link--primary d-inline-block d-md-none mt-4 text-bold js-show-trigger-alt"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> </div> </div> </article> <article id="changelog-81820" class="d-flex gutter-spacious flex-wrap position-relative changelog-line js-ajax-fetchable post-81820 changelog type-changelog status-publish hentry changelog-type-improvements changelog-label-api changelog-label-comments changelog-label-gists changelog-group-01-2025"> <div class="pb-4 pt-5 pt-md-7 col-12 col-md-5 position-relative"> <div class="changelog-single-details position-sticky top-12"> <svg class="octicon octicon-commit position-absolute left-0 color-bg-default color-fg-muted" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28"><path fill-rule="evenodd" d="M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" fill="currentColor"></path></svg> <h2 class="h5-mktg"><a class="Link--primary" href="https://github.blog/changelog/2025-01-06-you-can-now-disable-comments-on-github-gists" rel="bookmark">You can now disable comments on GitHub gists</a></h2> <time datetime="2025-01-06" class="d-block f5-mktg text-medium color-fg-muted mt-14px">January 6, 2025</time> <ul class="d-inline-block list-style-none post-hero__categories mt-2"><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/api/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">api</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/comments/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">comments</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/gists/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">gists</a></li></ul> </div> </div> <div class="col-12 col-md-7"> <div class="pb-5 pt-0 py-md-7 changelog-single-content-wrap border-bottom"> <div id="changelog-single-content-81820" class="post__content changelog-single-content js-show-all-target"> <p>To support better content moderation, you can now disable comments on individual gists in the UI as well as with the APIs. Once commenting is disabled, existing comments on the gist will be hidden and no new comments can be posted.</p> <p><img decoding="async" loading="lazy" src="https://github.com/user-attachments/assets/6887c714-6b8b-479a-8c1f-30e33d9d4dcb" alt="Screenshot of the gist edit page with the &quot;Disable comments&quot; option highlighted with a dark orange outline." /></p> <p>To learn more check out the <a href="https://gh.io/gistmoderation">documentation</a>.</p> <p>Questions or suggestions? Join the conversation in the <a href="https://github.com/orgs/community/discussions/categories/repositories">community discussion</a>.</p> </div> <a href="https://github.blog/changelog/2025-01-06-you-can-now-disable-comments-on-github-gists" role="button" class="Link--primary d-none d-md-inline-block mt-4 text-bold js-show-trigger" aria-expanded="false" aria-controls="changelog-single-content-81820"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> <a href="https://github.blog/changelog/2025-01-06-you-can-now-disable-comments-on-github-gists" class="Link--primary d-inline-block d-md-none mt-4 text-bold js-show-trigger-alt"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> </div> </div> </article> <article id="changelog-81782" class="d-flex gutter-spacious flex-wrap position-relative changelog-line js-ajax-fetchable post-81782 changelog type-changelog status-publish hentry changelog-type-new-releases changelog-label-api changelog-label-apps changelog-label-enterprise changelog-label-ghec changelog-label-insights changelog-label-organizations changelog-group-12-2024"> <div class="pb-4 pt-5 pt-md-7 col-12 col-md-5 position-relative"> <div class="changelog-single-details position-sticky top-12"> <svg class="octicon octicon-commit position-absolute left-0 color-bg-default color-fg-muted" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28"><path fill-rule="evenodd" d="M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" fill="currentColor"></path></svg> <h2 class="h5-mktg"><a class="Link--primary" href="https://github.blog/changelog/2024-12-20-rest-api-insights-for-organizations-is-now-generally-available" rel="bookmark">REST API insights for organizations is now generally available</a></h2> <time datetime="2024-12-20" class="d-block f5-mktg text-medium color-fg-muted mt-14px">December 20, 2024</time> <ul class="d-inline-block list-style-none post-hero__categories mt-2"><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/api/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">api</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/apps/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">apps</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/enterprise/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">enterprise</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/ghec/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">ghec</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/insights/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">insights</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/organizations/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">organizations</a></li></ul> </div> </div> <div class="col-12 col-md-7"> <div class="pb-5 pt-0 py-md-7 changelog-single-content-wrap border-bottom"> <div id="changelog-single-content-81782" class="post__content changelog-single-content js-show-all-target"> <p>As a GitHub Enterprise Cloud organization owner, you and your designated users can now use <strong>API insights</strong> to visualize REST API activity for your entire organization or specific apps and users. This new feature helps you understand the sources of your REST API activity and manage against your primary rate limits—giving you visibility into the timeframe, apps, and API endpoints involved.</p> <h2 id="who-can-access-it">Who can access it<a href="#who-can-access-it" class="heading-link pl-2 text-italic text-bold" aria-label="Who can access it"></a></h2> <p>The API insights feature is available only at the organization level. By default, only organization owners can access it. However, organization owners can grant access to non-owners by creating a custom role at the organization level, assigning the permission named <strong>View organization API insights</strong> to the custom role, and then assigning the custom role to an organization member or team. See the documentation for <a href="https://docs.github.com/en/enterprise-cloud@latest/organizations/managing-peoples-access-to-your-organization-with-roles/managing-custom-organization-roles">managing organization custom roles</a>.</p> <h2 id="where-to-find-it">Where to find it<a href="#where-to-find-it" class="heading-link pl-2 text-italic text-bold" aria-label="Where to find it"></a></h2> <p>The API insights feature is available to all GitHub Enterprise Cloud organizations. To access it on your organization home page, select <strong>Insights</strong> near the top of the page, and then select <strong>REST API</strong> on the left side of the page.</p> <p><img decoding="async" loading="lazy" src="https://gist.github.com/user-attachments/assets/4cf9d271-8814-4803-a7ff-7a8b0eaeea7c" alt="An image of an organization homepage where selecting Insights and then REST API will navigate to the new API insights feature." /></p> <h2 id="how-to-use-it">How to use it<a href="#how-to-use-it" class="heading-link pl-2 text-italic text-bold" aria-label="How to use it"></a></h2> <p>Use the <strong>Period</strong> and <strong>Interval</strong> drop-downs to choose the range of time displayed in the chart and how granularly to display REST API requests on the chart. These drop-downs also set the time range for the “Total REST requests,” the “Primary-rate-limited requests,&#8221; and the Actors table below the chart.</p> <p><img decoding="async" loading="lazy" src="https://gist.github.com/user-attachments/assets/9d07270d-4a93-4f8a-bddc-1ae42acafd9c" alt="An image of the API insights feature page showing the Period drop-down expanded for selecting the time period of REST API activity to include." /></p> <p>The Actors table displays the GitHub Apps and users that made REST API requests in the current organization within the selected time period. Select a GitHub App to display its REST API activity and any primary rate-limiting. Select a user to display their personal REST API activity from personal access tokens (PATs) and OAuth apps acting on their behalf.</p> <p><img decoding="async" loading="lazy" src="https://gist.github.com/user-attachments/assets/ace61b8e-967a-4a59-833d-f08c4f2a440b" alt="An image of the API insights feature page showing a table of actors, including GitHub Apps and users, that created REST API activity in the selected time period." /></p> <h2 id="tell-us-what-you-think">Tell us what you think<a href="#tell-us-what-you-think" class="heading-link pl-2 text-italic text-bold" aria-label="Tell us what you think"></a></h2> <p>We welcome your feedback in the <a href="https://github.co/api-insights-discussion">Enterprise community discussions</a>.</p> <p>Refer to the <a href="https://github.co/api-insights-docs">documentation for API insights</a> for more details about understanding your organization&#8217;s REST API activity and investigating primary rate-limiting.</p> </div> <a href="https://github.blog/changelog/2024-12-20-rest-api-insights-for-organizations-is-now-generally-available" role="button" class="Link--primary d-none d-md-inline-block mt-4 text-bold js-show-trigger" aria-expanded="false" aria-controls="changelog-single-content-81782"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> <a href="https://github.blog/changelog/2024-12-20-rest-api-insights-for-organizations-is-now-generally-available" class="Link--primary d-inline-block d-md-none mt-4 text-bold js-show-trigger-alt"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> </div> </div> </article> <article id="changelog-81687" class="d-flex gutter-spacious flex-wrap position-relative changelog-line js-ajax-fetchable post-81687 changelog type-changelog status-publish hentry changelog-type-new-releases changelog-label-advanced-security changelog-label-api changelog-label-code-scanning changelog-label-codeql changelog-label-copilot changelog-label-security-and-compliance changelog-group-12-2024"> <div class="pb-4 pt-5 pt-md-7 col-12 col-md-5 position-relative"> <div class="changelog-single-details position-sticky top-12"> <svg class="octicon octicon-commit position-absolute left-0 color-bg-default color-fg-muted" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28"><path fill-rule="evenodd" d="M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" fill="currentColor"></path></svg> <h2 class="h5-mktg"><a class="Link--primary" href="https://github.blog/changelog/2024-12-16-copilot-autofix-can-now-be-generated-with-the-rest-api-public-preview" rel="bookmark">Copilot Autofix can now be generated with the REST API (Public Preview)</a></h2> <time datetime="2024-12-17" class="d-block f5-mktg text-medium color-fg-muted mt-14px">December 17, 2024</time> <ul class="d-inline-block list-style-none post-hero__categories mt-2"><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/advanced-security/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">advanced-security</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/api/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">api</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/code-scanning/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">code-scanning</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/codeql/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">codeql</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/copilot/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">copilot</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/security-and-compliance/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">security-and-compliance</a></li></ul> </div> </div> <div class="col-12 col-md-7"> <div class="pb-5 pt-0 py-md-7 changelog-single-content-wrap border-bottom"> <div id="changelog-single-content-81687" class="post__content changelog-single-content js-show-all-target"> <p><a href="https://docs.github.com/en/rest/code-scanning/code-scanning?apiVersion=2022-11-28">New REST API endpoints for code scanning</a> allow you to request the generation of Copilot Autofix for code scanning alerts. These endpoints also provide the Autofix generation status, along with metadata and AI-generated descriptions for the fixes, and enable you to apply Autofix to a branch. This functionality can be particularly useful for addressing security vulnerabilities programmatically and for tracking the status of alerts with Copilot Autofixes in your system.</p> <p>To generate Copilot Autofix, call the <code>POST /repos/{owner}/{repo}/code-scanning/alerts/{number}/autofix</code> endpoint.<br /> Additionally, you can retrieve the Autofix and commit it by using the <code>GET /repos/{owner}/{repo}/code-scanning/alerts/{number}/autofix</code> endpoint followed by <code>POST /repos/{owner}/{repo}/code-scanning/alerts/{number}/autofix/commits</code>.</p> <p>For more information, see: <a href="https://docs.github.com/en/code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning">About Copilot Autofix for CodeQL code scanning</a>. If you have feedback for Copilot Autofix for code scanning, please join the discussion <a href="https://github.com/orgs/community/discussions/111094">here</a>.</p> </div> <a href="https://github.blog/changelog/2024-12-16-copilot-autofix-can-now-be-generated-with-the-rest-api-public-preview" role="button" class="Link--primary d-none d-md-inline-block mt-4 text-bold js-show-trigger" aria-expanded="false" aria-controls="changelog-single-content-81687"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> <a href="https://github.blog/changelog/2024-12-16-copilot-autofix-can-now-be-generated-with-the-rest-api-public-preview" class="Link--primary d-inline-block d-md-none mt-4 text-bold js-show-trigger-alt"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> </div> </div> </article> <article id="changelog-81671" class="d-flex gutter-spacious flex-wrap position-relative changelog-line js-ajax-fetchable post-81671 changelog type-changelog status-publish hentry changelog-type-improvements changelog-label-api changelog-label-ghec changelog-label-organizations changelog-group-12-2024"> <div class="pb-4 pt-5 pt-md-7 col-12 col-md-5 position-relative"> <div class="changelog-single-details position-sticky top-12"> <svg class="octicon octicon-commit position-absolute left-0 color-bg-default color-fg-muted" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28"><path fill-rule="evenodd" d="M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" fill="currentColor"></path></svg> <h2 class="h5-mktg"><a class="Link--primary" href="https://github.blog/changelog/2024-12-13-replacement-of-announcement-banner-graphql-fields" rel="bookmark">Replacement of announcement banner GraphQL fields</a></h2> <time datetime="2024-12-13" class="d-block f5-mktg text-medium color-fg-muted mt-14px">December 13, 2024</time> <ul class="d-inline-block list-style-none post-hero__categories mt-2"><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/api/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">api</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/ghec/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">ghec</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/organizations/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">organizations</a></li></ul> </div> </div> <div class="col-12 col-md-7"> <div class="pb-5 pt-0 py-md-7 changelog-single-content-wrap border-bottom"> <div id="changelog-single-content-81671" class="post__content changelog-single-content js-show-all-target"> <p>Announcement banner fields in GraphQL for enterprises and organizations are being replaced with a new <code>announcementBanner</code> object to simplify their access and better follow our standard styles. The new fields are available today, and the old fields will be removed on April 1, 2025.</p> <p>The following fields are being removed from the <code>enterprise</code> and <code>organization</code> GraphQL objects:</p> <ul> <li><code>announcement</code></li> <li><code>announcementCreatedAt</code></li> <li><code>announcementExpiresAt</code></li> <li><code>announcementUserDismissible</code></li> </ul> <p>The new GraphQL structure for these fields is:</p> <pre><code>announcementBanner { message createdAt expiresAt isUserDismissible } </code></pre> <p>Learn more about <a href="https://docs.github.com/enterprise-cloud@latest/organizations/managing-organization-settings/creating-an-announcement-banner-for-your-organization">announcement banners for organizations</a> on GitHub Enterprise Cloud.</p> </div> <a href="https://github.blog/changelog/2024-12-13-replacement-of-announcement-banner-graphql-fields" role="button" class="Link--primary d-none d-md-inline-block mt-4 text-bold js-show-trigger" aria-expanded="false" aria-controls="changelog-single-content-81671"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> <a href="https://github.blog/changelog/2024-12-13-replacement-of-announcement-banner-graphql-fields" class="Link--primary d-inline-block d-md-none mt-4 text-bold js-show-trigger-alt"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> </div> </div> </article> <article id="changelog-81660" class="d-flex gutter-spacious flex-wrap position-relative changelog-line js-ajax-fetchable post-81660 changelog type-changelog status-publish hentry changelog-type-new-releases changelog-label-api changelog-label-issues changelog-label-mobile changelog-label-projects changelog-group-12-2024"> <div class="pb-4 pt-5 pt-md-7 col-12 col-md-5 position-relative"> <div class="changelog-single-details position-sticky top-12"> <svg class="octicon octicon-commit position-absolute left-0 color-bg-default color-fg-muted" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28"><path fill-rule="evenodd" d="M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" fill="currentColor"></path></svg> <h2 class="h5-mktg"><a class="Link--primary" href="https://github.blog/changelog/2024-12-12-github-issues-projects-close-issue-as-a-duplicate-rest-api-for-sub-issues-and-more" rel="bookmark">GitHub Issues &amp; Projects &#8211; Close issue as a duplicate, REST API for sub-issues, and more!</a></h2> <time datetime="2024-12-12" class="d-block f5-mktg text-medium color-fg-muted mt-14px">December 12, 2024</time> <ul class="d-inline-block list-style-none post-hero__categories mt-2"><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/api/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">api</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/issues/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">issues</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/mobile/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">mobile</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/projects/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">projects</a></li></ul> </div> </div> <div class="col-12 col-md-7"> <div class="pb-5 pt-0 py-md-7 changelog-single-content-wrap border-bottom"> <div id="changelog-single-content-81660" class="post__content changelog-single-content js-show-all-target"> <p>Following our &#8220;Evolving GitHub Issues&#8221; <a href="https://github.blog/changelog/2024-10-01-evolving-github-issues-public-beta/">announcement</a> we&#8217;ve continued to improve the experience based on your feedback, including closing an issue as a duplicate, a REST API for sub-issues, and expanding the limits for both sub-issues and issue types.</p> <p>These new features are all available in public preview for you to try. To gain access for your organization, please sign up <a href="https://github.com/features/issues/signup">here</a>.</p> <h2 id="close-an-issue-as-a-duplicate"><g-emoji fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f9f9.png?v8" alias="broom">&#129529;</g-emoji> Close an issue as a duplicate<a href="#close-an-issue-as-a-duplicate" class="heading-link pl-2 text-italic text-bold" aria-label="&lt;g-emoji fallback-src=&quot;https://github.githubassets.com/images/icons/emoji/unicode/1f9f9.png?v8&quot; alias=&quot;broom&quot;&gt;&#129529;&lt;/g-emoji&gt; Close an issue as a duplicate"></a></h2> <p>You can now close an issue as a duplicate of another issue, making it easier to manage your issues and provide more clarity on why they were closed.</p> <p>When closing an issue, select <code>Close as duplicate</code> from the dropdown to search for and select the duplicate issue. You&#8217;ll then see an event in the timeline and note at the top making it clear why it was closed.</p> <div style="width: 1920px;" class="wp-video"><video class="wp-video-shortcode" id="video-81660-4" width="1920" height="1080" loop="1" autoplay="1" muted="1" preload="auto" controls="controls"><source type="video/mp4" src="https://github.blog/wp-content/uploads/2024/12/video.mp4#t=0.001?_=4" /><a href="https://github.blog/wp-content/uploads/2024/12/video.mp4#t=0.001">https://github.blog/wp-content/uploads/2024/12/video.mp4#t=0.001</a></video></div> <h2 id="rest-api-support-for-sub-issues"><g-emoji fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2699.png?v8" alias="gear">&#9881;</g-emoji> REST API support for sub-issues<a href="#rest-api-support-for-sub-issues" class="heading-link pl-2 text-italic text-bold" aria-label="&lt;g-emoji fallback-src=&quot;https://github.githubassets.com/images/icons/emoji/unicode/2699.png?v8&quot; alias=&quot;gear&quot;&gt;&#9881;&lt;/g-emoji&gt; REST API support for sub-issues"></a></h2> <p>You can now use the REST API to view, add, remove, and reprioritize sub-issues, making it easier to automate your use of sub-issues. Check out the <a href="https://docs.github.com/en/rest/issues/sub-issues?apiVersion=2022-11-28">documentation</a> to learn more.</p> <h2 id="increased-limits-for-sub-issues-and-issue-types"><g-emoji fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2795.png?v8" alias="heavy_plus_sign">&#10133;</g-emoji> Increased limits for sub-issues and issue types<a href="#increased-limits-for-sub-issues-and-issue-types" class="heading-link pl-2 text-italic text-bold" aria-label="&lt;g-emoji fallback-src=&quot;https://github.githubassets.com/images/icons/emoji/unicode/2795.png?v8&quot; alias=&quot;heavy_plus_sign&quot;&gt;&#10133;&lt;/g-emoji&gt; Increased limits for sub-issues and issue types"></a></h2> <p>You can now have up to 100 sub-issues per parent issue (up from 50), as well as up to 25 issue types in an organization (up from 10), making it easier to manage, classify, and break down work.</p> <p><img decoding="async" loading="lazy" src="https://github.com/user-attachments/assets/3ddef1c7-2f8c-48f0-87af-22a38b4610f3" alt="Issue type organization settings showing maximum limit of 25 issue types" /></p> <h2 id="issue-types-on-github-mobile"><g-emoji fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f4f1.png?v8" alias="iphone">&#128241;</g-emoji> Issue types on GitHub Mobile<a href="#issue-types-on-github-mobile" class="heading-link pl-2 text-italic text-bold" aria-label="&lt;g-emoji fallback-src=&quot;https://github.githubassets.com/images/icons/emoji/unicode/1f4f1.png?v8&quot; alias=&quot;iphone&quot;&gt;&#128241;&lt;/g-emoji&gt; Issue types on GitHub Mobile"></a></h2> <p>You can now view, add, and update issue types on GitHub Mobile.</p> <p><img decoding="async" loading="lazy" src="https://github.com/user-attachments/assets/40bc9b4a-a6cc-434c-9a2d-a4b314f99e3f" alt="Issue types on GitHub Mobile" /></p> <h2 id="improved-filtering-for-sub-issues-and-issue-types"><g-emoji fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f50d.png?v8" alias="mag">&#128269;</g-emoji> Improved filtering for sub-issues and issue types<a href="#improved-filtering-for-sub-issues-and-issue-types" class="heading-link pl-2 text-italic text-bold" aria-label="&lt;g-emoji fallback-src=&quot;https://github.githubassets.com/images/icons/emoji/unicode/1f50d.png?v8&quot; alias=&quot;mag&quot;&gt;&#128269;&lt;/g-emoji&gt; Improved filtering for sub-issues and issue types"></a></h2> <p>You can use the <code>has:</code> and <code>no:</code> filters to search for sub-issues and issue types both from a project and the repository issues page, making it easier to find the exact set of issues you&#8217;re looking for and make updates.</p> <p><img decoding="async" loading="lazy" src="https://github.com/user-attachments/assets/27b83b7d-3d46-4d6a-8418-afbfd3356def" alt="Issue filtering using has filter" /></p> <p>Example filters include:<br /> &#8211; <code>no:type</code> to find all issues that do not yet have a type<br /> &#8211; <code>no:parent-issue</code> to find all issues without a parent issue<br /> &#8211; <code>has:sub-issue</code> to find all issues that have sub-issues</p> <h2 id="additional-improvements"><g-emoji fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/2728.png?v8" alias="sparkles">&#10024;</g-emoji> Additional improvements<a href="#additional-improvements" class="heading-link pl-2 text-italic text-bold" aria-label="&lt;g-emoji fallback-src=&quot;https://github.githubassets.com/images/icons/emoji/unicode/2728.png?v8&quot; alias=&quot;sparkles&quot;&gt;&#10024;&lt;/g-emoji&gt; Additional improvements"></a></h2> <p>On top of the many bug fixes we&#8217;ve shipped, we&#8217;ve also introduced the following improvements:<br /> &#8211; If the sub-issue is from a different repository than the parent issue, you will now see the repository name in the sub-issues list.<br /> &#8211; In GitHub markdown, pasting in a project link will now show the project name as well as more project details on hover.<br /> &#8211; Projects insights charts now use Highcharts, which is an industry standard library for charts, improving our accessibility of projects insights.<br /> &#8211; You can now use the <a href="https://docs.github.com/en/graphql/reference/mutations#updateprojectv2field"><code>UpdateProjectV2Field</code></a> GraphQL API mutation to directly update all single select field options in one API.</p> <h2 id="tell-us-what-you-think"><g-emoji fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/270d.png?v8" alias="writing_hand">&#9997;</g-emoji> Tell us what you think!<a href="#tell-us-what-you-think" class="heading-link pl-2 text-italic text-bold" aria-label="&lt;g-emoji fallback-src=&quot;https://github.githubassets.com/images/icons/emoji/unicode/270d.png?v8&quot; alias=&quot;writing_hand&quot;&gt;&#9997;&lt;/g-emoji&gt; Tell us what you think!"></a></h2> <p>Join the discussion in the <a href="https://github.com/orgs/community/discussions/146942">community discussion</a> to share your feedback.</p> <p>See how to use GitHub for project planning with <a href="https://github.com/features/issues">GitHub Issues</a>, check out what’s on the <a href="https://github.com/orgs/github/projects/4247/views/1">roadmap</a>, and learn more in the <a href="https://docs.github.com/en/issues">documentation</a>.</p> </div> <a href="https://github.blog/changelog/2024-12-12-github-issues-projects-close-issue-as-a-duplicate-rest-api-for-sub-issues-and-more" role="button" class="Link--primary d-none d-md-inline-block mt-4 text-bold js-show-trigger" aria-expanded="false" aria-controls="changelog-single-content-81660"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> <a href="https://github.blog/changelog/2024-12-12-github-issues-projects-close-issue-as-a-duplicate-rest-api-for-sub-issues-and-more" class="Link--primary d-inline-block d-md-none mt-4 text-bold js-show-trigger-alt"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> </div> </div> </article> <article id="changelog-81392" class="d-flex gutter-spacious flex-wrap position-relative changelog-line js-ajax-fetchable post-81392 changelog type-changelog status-publish hentry changelog-type-improvements changelog-label-api changelog-label-copilot changelog-group-11-2024"> <div class="pb-4 pt-5 pt-md-7 col-12 col-md-5 position-relative"> <div class="changelog-single-details position-sticky top-12"> <svg class="octicon octicon-commit position-absolute left-0 color-bg-default color-fg-muted" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28"><path fill-rule="evenodd" d="M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" fill="currentColor"></path></svg> <h2 class="h5-mktg"><a class="Link--primary" href="https://github.blog/changelog/2024-11-22-update-to-seat-created_at-timestamp-in-the-copilot-user-management-rest-api-public-preview" rel="bookmark">Update to seat `created_at` timestamp in the Copilot user management REST API [Public Preview]</a></h2> <time datetime="2024-11-22" class="d-block f5-mktg text-medium color-fg-muted mt-14px">November 22, 2024</time> <ul class="d-inline-block list-style-none post-hero__categories mt-2"><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/api/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">api</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/copilot/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">copilot</a></li></ul> </div> </div> <div class="col-12 col-md-7"> <div class="pb-5 pt-0 py-md-7 changelog-single-content-wrap border-bottom"> <div id="changelog-single-content-81392" class="post__content changelog-single-content js-show-all-target"> <p>Based on customer feedback, we have updated how the <code>created_at</code> timestamp works in the Copilot seat details portion of responses from the following REST API endpoints:</p> <ul> <li><code>/organization/{org}/billing/copilot/seats</code></li> <li><code>/enterprises/{enterprise}/billing/copilot/seats</code></li> <li><code>/organization/{org}/members/{username}/copilot</code></li> </ul> <p>The <code>created_at</code> timestamp now shows when a user received Copilot access, rather than when their team, enterprise team, or organization was granted access. This matches the timestamp of the seat&#8217;s corresponding <code>seat_added</code> event in the Audit Log.</p> </div> <a href="https://github.blog/changelog/2024-11-22-update-to-seat-created_at-timestamp-in-the-copilot-user-management-rest-api-public-preview" role="button" class="Link--primary d-none d-md-inline-block mt-4 text-bold js-show-trigger" aria-expanded="false" aria-controls="changelog-single-content-81392"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> <a href="https://github.blog/changelog/2024-11-22-update-to-seat-created_at-timestamp-in-the-copilot-user-management-rest-api-public-preview" class="Link--primary d-inline-block d-md-none mt-4 text-bold js-show-trigger-alt"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> </div> </div> </article> <article id="changelog-81082" class="d-flex gutter-spacious flex-wrap position-relative changelog-line js-ajax-fetchable post-81082 changelog type-changelog status-publish hentry changelog-type-improvements changelog-label-api changelog-label-compliance changelog-label-features changelog-label-security changelog-group-11-2024"> <div class="pb-4 pt-5 pt-md-7 col-12 col-md-5 position-relative"> <div class="changelog-single-details position-sticky top-12"> <svg class="octicon octicon-commit position-absolute left-0 color-bg-default color-fg-muted" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28"><path fill-rule="evenodd" d="M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" fill="currentColor"></path></svg> <h2 class="h5-mktg"><a class="Link--primary" href="https://github.blog/changelog/2024-11-08-upcoming-changes-to-data-retention-for-events-api-atom-feed-timeline-and-dashboard-feed-features" rel="bookmark">Upcoming changes to data retention for Events API, Atom feed, /timeline and /dashboard-feed features</a></h2> <time datetime="2024-11-08" class="d-block f5-mktg text-medium color-fg-muted mt-14px">November 8, 2024</time> <ul class="d-inline-block list-style-none post-hero__categories mt-2"><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/api/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">api</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/compliance/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">compliance</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/features/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">features</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/security/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">security</a></li></ul> </div> </div> <div class="col-12 col-md-7"> <div class="pb-5 pt-0 py-md-7 changelog-single-content-wrap border-bottom"> <div id="changelog-single-content-81082" class="post__content changelog-single-content js-show-all-target"> <p>Currently, you are able to query back up to 90 days worth of events from data tables you have access to when reviewing or utilizing specific events features: <a href="https://docs.github.com/en/rest/activity/events?apiVersion=2022-11-28">Events API (including push events)</a>, <a href="https://docs.github.com/en/rest/activity/feeds?apiVersion=2022-11-28">Atom feed</a>, <a href="https://docs.github.com/en/rest/activity/feeds?apiVersion=2022-11-28">/timeline</a>, or <a href="https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard">/dashboard-feed</a>. On January 30th, 2025, we will be modifying the window of data retention for these features from 90 days to 30 days.</p> <h2 id="why-are-we-making-changes">Why are we making changes?<a href="#why-are-we-making-changes" class="heading-link pl-2 text-italic text-bold" aria-label="Why are we making changes?"></a></h2> <p>We are making this change to help GitHub continue to scale for all our users, while continuing to provide existing customers of these features with the ability to still query and view recent important event information.</p> <h2 id="which-apis-will-be-impacted-in-this-change">Which APIs will be impacted in this change?<a href="#which-apis-will-be-impacted-in-this-change" class="heading-link pl-2 text-italic text-bold" aria-label="Which APIs will be impacted in this change?"></a></h2> <p>The relevant APIs that will be affected are:<br /> &#8211; /events : <a href="https://docs.github.com/en/rest/activity/events?apiVersion=2022-11-28#list-public-events">List public events</a><br /> &#8211; /networks/{owner}/{repo}/events : <a href="https://docs.github.com/en/rest/activity/events?apiVersion=2022-11-28#list-public-events-for-a-network-of-repositories">List public events for a network of repositories</a><br /> &#8211; /orgs/{org}/events : <a href="https://docs.github.com/en/rest/activity/events?apiVersion=2022-11-28#list-public-organization-events">List public organization events</a><br /> &#8211; /repos/{owner}/{repo}/events : <a href="https://docs.github.com/en/rest/activity/events?apiVersion=2022-11-28#list-repository-events">List repository events</a><br /> &#8211; /users/{username}/events : <a href="https://docs.github.com/en/rest/activity/events?apiVersion=2022-11-28#list-events-for-the-authenticated-user">List events for the authenticated user</a><br /> &#8211; /users/{username}/events/orgs/{org} : <a href="https://docs.github.com/en/rest/activity/events?apiVersion=2022-11-28#list-organization-events-for-the-authenticated-user">List organization events for the authenticated user</a><br /> &#8211; /users/{username}/events/public : <a href="https://docs.github.com/en/rest/activity/events?apiVersion=2022-11-28#list-public-events-for-a-user">List public events for a user</a><br /> &#8211; /users/{username}/received_events : <a href="https://docs.github.com/en/rest/activity/events?apiVersion=2022-11-28#list-events-received-by-the-authenticated-user">List events received by the authenticated user</a><br /> &#8211; /users/{username}/received_events/public : <a href="https://docs.github.com/en/rest/activity/events?apiVersion=2022-11-28#list-public-events-received-by-a-user">List public events received by a user</a><br /> &#8211; /feeds : <a href="https://docs.github.com/en/rest/activity/feeds?apiVersion=2022-11-28#get-feeds">Get feeds</a></p> <h2 id="when-can-you-expect-the-changes-to-occur">When can you expect the changes to occur?<a href="#when-can-you-expect-the-changes-to-occur" class="heading-link pl-2 text-italic text-bold" aria-label="When can you expect the changes to occur?"></a></h2> <p>On January 30th, 2025, we will be reducing the window that can be queried across those specified events features from 90 days to 30 days. In advance of that, we will test this change for 24 hours on December 3rd, 2024.</p> <p>The <a href="https://docs.github.com/en/enterprise-cloud@latest/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/managing-dormant-users#downloading-the-dormant-users-report-from-your-enterprise-account">Dormant Users feature report</a> will also be impacted a result of this change.  As of 1/31/25, users who are 31+ days without activity will fall into the dormant category and would appear in the Dormant Users report.</p> <p>We recommend leveraging a workflow that uses weekly or daily exports if you require further historical access.</p> <h2 id="where-can-i-learn-more">Where can I learn more?<a href="#where-can-i-learn-more" class="heading-link pl-2 text-italic text-bold" aria-label="Where can I learn more?"></a></h2> <p>If you have concerns, comments, or feedback, please join us in this Discussion in the <a href="https://github.com/orgs/community/discussions/137289">GitHub Community</a>.</p> </div> <a href="https://github.blog/changelog/2024-11-08-upcoming-changes-to-data-retention-for-events-api-atom-feed-timeline-and-dashboard-feed-features" role="button" class="Link--primary d-none d-md-inline-block mt-4 text-bold js-show-trigger" aria-expanded="false" aria-controls="changelog-single-content-81082"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> <a href="https://github.blog/changelog/2024-11-08-upcoming-changes-to-data-retention-for-events-api-atom-feed-timeline-and-dashboard-feed-features" class="Link--primary d-inline-block d-md-none mt-4 text-bold js-show-trigger-alt"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> </div> </div> </article> <article id="changelog-80901" class="d-flex gutter-spacious flex-wrap position-relative changelog-line js-ajax-fetchable post-80901 changelog type-changelog status-publish hentry changelog-type-new-releases changelog-label-api changelog-label-apps changelog-label-enterprise changelog-label-ghec changelog-label-insights changelog-label-organizations changelog-group-10-2024"> <div class="pb-4 pt-5 pt-md-7 col-12 col-md-5 position-relative"> <div class="changelog-single-details position-sticky top-12"> <svg class="octicon octicon-commit position-absolute left-0 color-bg-default color-fg-muted" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28"><path fill-rule="evenodd" d="M15.5 11.75a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm1.444-.75a5.001 5.001 0 00-9.888 0H2.75a.75.75 0 100 1.5h4.306a5.001 5.001 0 009.888 0h4.306a.75.75 0 100-1.5h-4.306z" fill="currentColor"></path></svg> <h2 class="h5-mktg"><a class="Link--primary" href="https://github.blog/changelog/2024-10-29-view-an-organizations-rest-api-activity-with-api-insights-in-public-preview" rel="bookmark">View an organization&#8217;s REST API activity with API insights in public preview</a></h2> <time datetime="2024-10-29" class="d-block f5-mktg text-medium color-fg-muted mt-14px">October 29, 2024</time> <ul class="d-inline-block list-style-none post-hero__categories mt-2"><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/api/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">api</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/apps/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">apps</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/enterprise/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">enterprise</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/ghec/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">ghec</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/insights/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">insights</a></li><li class="d-inline-block mr-2 mt-2"><a href="https://github.blog/changelog/label/organizations/" class="f5-mktg pill-label text-gradient-purple-coral text-bold">organizations</a></li></ul> </div> </div> <div class="col-12 col-md-7"> <div class="pb-5 pt-0 py-md-7 changelog-single-content-wrap border-bottom"> <div id="changelog-single-content-80901" class="post__content changelog-single-content js-show-all-target"> <p>As a GitHub Enterprise Cloud organization owner, you and your designated users can now use <strong>API insights</strong> to visualize REST API activity for your entire organization or specific apps and users. This new feature, currently in public preview, helps you understand the sources of your REST API activity and manage against your primary rate limits—giving you visibility into the timeframe, apps, and API endpoints involved.</p> <h2 id="who-can-access-it">Who can access it<a href="#who-can-access-it" class="heading-link pl-2 text-italic text-bold" aria-label="Who can access it"></a></h2> <p>The API insights feature is available only at the organization level. By default, only organization owners can access it. However, organization owners can grant access to non-owners by creating a custom role at the organization level, assigning the permission named <strong>View organization API insights</strong> to the custom role, and then assigning the custom role to an organization member or team. See the documentation for <a href="https://docs.github.com/en/enterprise-cloud@latest/organizations/managing-peoples-access-to-your-organization-with-roles/managing-custom-organization-roles">managing organization custom roles</a>.</p> <h2 id="where-to-find-it">Where to find it<a href="#where-to-find-it" class="heading-link pl-2 text-italic text-bold" aria-label="Where to find it"></a></h2> <p>The API insights public preview feature is enabled for all GitHub Enterprise Cloud organizations. To access it on your organization home page, select <strong>Insights</strong> near the top of the page, and then select <strong>REST API</strong> on the left side of the page.</p> <p><img decoding="async" loading="lazy" src="https://gist.github.com/user-attachments/assets/ddf47913-13ca-4f79-9ced-bce42a74ca3f" alt="An image of an organization homepage where selecting Insights and then REST API will navigate to the new API insights feature." /></p> <h2 id="how-to-use-it">How to use it<a href="#how-to-use-it" class="heading-link pl-2 text-italic text-bold" aria-label="How to use it"></a></h2> <p>Use the <strong>Period</strong> and <strong>Interval</strong> drop-downs to choose the range of time displayed in the chart and how granularly to display REST API requests on the chart. These drop-downs also set the time range for the “Total REST requests,” the “Primary-rate-limited requests,&#8221; and the Actors table below the chart.</p> <p><img decoding="async" loading="lazy" src="https://gist.github.com/user-attachments/assets/9d07270d-4a93-4f8a-bddc-1ae42acafd9c" alt="An image of the API insights feature page showing the Period drop-down expanded for selecting the time period of REST API activity to include." /></p> <p>The Actors table displays the GitHub Apps and users that made REST API requests in the current organization within the selected time period. Select a GitHub App to display its REST API activity and any primary-rate-limiting. Select a user to display their personal REST API activity from personal access tokens (PATs) and OAuth apps acting on their behalf.</p> <p><img decoding="async" loading="lazy" src="https://gist.github.com/user-attachments/assets/ace61b8e-967a-4a59-833d-f08c4f2a440b" alt="An image of the API insights feature page showing a table of actors, including GitHub Apps and users, that created REST API activity in the selected time period." /></p> <h2 id="tell-us-what-you-think">Tell us what you think<a href="#tell-us-what-you-think" class="heading-link pl-2 text-italic text-bold" aria-label="Tell us what you think"></a></h2> <p>We welcome your feedback in <a href="https://github.co/api-insights-discussion">this community discussion</a>.</p> <p>Refer to the <a href="https://github.co/api-insights-docs">documentation for API insights</a> for more details about understanding your organization&#8217;s REST API activity and investigating primary-rate-limiting.</p> </div> <a href="https://github.blog/changelog/2024-10-29-view-an-organizations-rest-api-activity-with-api-insights-in-public-preview" role="button" class="Link--primary d-none d-md-inline-block mt-4 text-bold js-show-trigger" aria-expanded="false" aria-controls="changelog-single-content-80901"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> <a href="https://github.blog/changelog/2024-10-29-view-an-organizations-rest-api-activity-with-api-insights-in-public-preview" class="Link--primary d-inline-block d-md-none mt-4 text-bold js-show-trigger-alt"> See more <svg class="octicon octicon-chevron-down" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z" fill="currentColor"></path></svg> </a> </div> </div> </article> </div> <div class="container-xl mx-auto p-responsive-blog mt-6 mt-md-8"> <div class="d-flex gutter-spacious"> <div class="col-12 col-md-7 offset-md-5"> <a class="Button Button--size-medium Button--primary Button--Arrow-down js-ajax-fetch changelog-single-content-wrap" href="https://github.blog/changelog/label/api,apis/page/2/" > <span class="Button__text"> <span class="Text Text--200 Text--antialiased Text--weight-semibold Button--label Button--label-medium Button--label-primary"> View more changes </span> </span> <span class="Button__trailing-visual"> <svg class="ExpandableArrow Button-arrow" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"> <path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path> <path class="ExpandableArrow-stem" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path> </svg> </span> </a> </div> </div> </div> </div> </main> <div data-color-mode="dark" data-light-theme="light" data-dark-theme="dark"> <footer class="footer pt-6"> <div class="container-xl p-responsive-blog"> <div class="d-flex flex-wrap py-5 mb-5"> <div class="col-12 col-lg-4 mb-5"> <a href="https://github.com/" data-ga-click="Resources, go to home, resources footer" class="color-fg-default" aria-label="Go to GitHub homepage"> <svg height="30" class="octicon octicon-logo-github" viewBox="0 0 45 16" version="1.1" width="84" aria-hidden="true"> <path fill-rule="evenodd" d="M18.53 12.03h-.02c.009 0 .015.01.024.011h.006l-.01-.01zm.004.011c-.093.001-.327.05-.574.05-.78 0-1.05-.36-1.05-.83V8.13h1.59c.09 0 .16-.08.16-.19v-1.7c0-.09-.08-.17-.16-.17h-1.59V3.96c0-.08-.05-.13-.14-.13h-2.16c-.09 0-.14.05-.14.13v2.17s-1.09.27-1.16.28c-.08.02-.13.09-.13.17v1.36c0 .11.08.19.17.19h1.11v3.28c0 2.44 1.7 2.69 2.86 2.69.53 0 1.17-.17 1.27-.22.06-.02.09-.09.09-.16v-1.5a.177.177 0 00-.146-.18zM42.23 9.84c0-1.81-.73-2.05-1.5-1.97-.6.04-1.08.34-1.08.34v3.52s.49.34 1.22.36c1.03.03 1.36-.34 1.36-2.25zm2.43-.16c0 3.43-1.11 4.41-3.05 4.41-1.64 0-2.52-.83-2.52-.83s-.04.46-.09.52c-.03.06-.08.08-.14.08h-1.48c-.1 0-.19-.08-.19-.17l.02-11.11c0-.09.08-.17.17-.17h2.13c.09 0 .17.08.17.17v3.77s.82-.53 2.02-.53l-.01-.02c1.2 0 2.97.45 2.97 3.88zm-8.72-3.61h-2.1c-.11 0-.17.08-.17.19v5.44s-.55.39-1.3.39-.97-.34-.97-1.09V6.25c0-.09-.08-.17-.17-.17h-2.14c-.09 0-.17.08-.17.17v5.11c0 2.2 1.23 2.75 2.92 2.75 1.39 0 2.52-.77 2.52-.77s.05.39.08.45c.02.05.09.09.16.09h1.34c.11 0 .17-.08.17-.17l.02-7.47c0-.09-.08-.17-.19-.17zm-23.7-.01h-2.13c-.09 0-.17.09-.17.2v7.34c0 .2.13.27.3.27h1.92c.2 0 .25-.09.25-.27V6.23c0-.09-.08-.17-.17-.17zm-1.05-3.38c-.77 0-1.38.61-1.38 1.38 0 .77.61 1.38 1.38 1.38.75 0 1.36-.61 1.36-1.38 0-.77-.61-1.38-1.36-1.38zm16.49-.25h-2.11c-.09 0-.17.08-.17.17v4.09h-3.31V2.6c0-.09-.08-.17-.17-.17h-2.13c-.09 0-.17.08-.17.17v11.11c0 .09.09.17.17.17h2.13c.09 0 .17-.08.17-.17V8.96h3.31l-.02 4.75c0 .09.08.17.17.17h2.13c.09 0 .17-.08.17-.17V2.6c0-.09-.08-.17-.17-.17zM8.81 7.35v5.74c0 .04-.01.11-.06.13 0 0-1.25.89-3.31.89-2.49 0-5.44-.78-5.44-5.92S2.58 1.99 5.1 2c2.18 0 3.06.49 3.2.58.04.05.06.09.06.14L7.94 4.5c0 .09-.09.2-.2.17-.36-.11-.9-.33-2.17-.33-1.47 0-3.05.42-3.05 3.73s1.5 3.7 2.58 3.7c.92 0 1.25-.11 1.25-.11v-2.3H4.88c-.11 0-.19-.08-.19-.17V7.35c0-.09.08-.17.19-.17h3.74c.11 0 .19.08.19.17z"></path> </svg> </a> </div> <div class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-lg-0 pl-lg-4"><h2 class="h5 mb-3 text-mono color-text-tertiary text-normal">Product</h2><ul class="list-style-none text-gray f5"><li class="lh-condensed mb-3"><a href="https://github.com/features" data-ga-click="Site Foundation Components, go to Features, site foundation components footer" class="Link--secondary">Features</a></li><li class="lh-condensed mb-3"><a href="https://github.com/security" data-ga-click="Site Foundation Components, go to Security, site foundation components footer" class="Link--secondary">Security</a></li><li class="lh-condensed mb-3"><a href="https://github.com/enterprise" data-ga-click="Site Foundation Components, go to Enterprise, site foundation components footer" class="Link--secondary">Enterprise</a></li><li class="lh-condensed mb-3"><a href="https://github.com/customer-stories?type=enterprise" data-ga-click="Site Foundation Components, go to Customer Stories, site foundation components footer" class="Link--secondary">Customer Stories</a></li><li class="lh-condensed mb-3"><a href="https://github.com/pricing" data-ga-click="Site Foundation Components, go to Pricing, site foundation components footer" class="Link--secondary">Pricing</a></li><li class="lh-condensed mb-3"><a href="https://resources.github.com/" data-ga-click="Site Foundation Components, go to Resources, site foundation components footer" class="Link--secondary">Resources</a></li></ul></div><div class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-lg-0 pl-lg-4"><h2 class="h5 mb-3 text-mono color-text-tertiary text-normal">Platform</h2><ul class="list-style-none text-gray f5"><li class="lh-condensed mb-3"><a href="https://developer.github.com/" data-ga-click="Site Foundation Components, go to Developer API, site foundation components footer" class="Link--secondary">Developer API</a></li><li class="lh-condensed mb-3"><a href="https://partner.github.com/" data-ga-click="Site Foundation Components, go to Partners, site foundation components footer" class="Link--secondary">Partners</a></li><li class="lh-condensed mb-3"><a href="https://atom.io/" data-ga-click="Site Foundation Components, go to Atom, site foundation components footer" class="Link--secondary">Atom</a></li><li class="lh-condensed mb-3"><a href="https://www.electronjs.org/" data-ga-click="Site Foundation Components, go to Electron, site foundation components footer" class="Link--secondary">Electron</a></li><li class="lh-condensed mb-3"><a href="https://desktop.github.com/" data-ga-click="Site Foundation Components, go to GitHub Desktop, site foundation components footer" class="Link--secondary">GitHub Desktop</a></li></ul></div><div class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-lg-0 pl-lg-4"><h2 class="h5 mb-3 text-mono color-text-tertiary text-normal">Support</h2><ul class="list-style-none text-gray f5"><li class="lh-condensed mb-3"><a href="https://docs.github.com/" data-ga-click="Site Foundation Components, go to Docs, site foundation components footer" class="Link--secondary">Docs</a></li><li class="lh-condensed mb-3"><a href="https://github.community/" data-ga-click="Site Foundation Components, go to Community Forum, site foundation components footer" class="Link--secondary">Community Forum</a></li><li class="lh-condensed mb-3"><a href="https://services.github.com/" data-ga-click="Site Foundation Components, go to Training, site foundation components footer" class="Link--secondary">Training</a></li><li class="lh-condensed mb-3"><a href="https://www.githubstatus.com/" data-ga-click="Site Foundation Components, go to Status, site foundation components footer" class="Link--secondary">Status</a></li><li class="lh-condensed mb-3"><a href="https://support.github.com/" data-ga-click="Site Foundation Components, go to Contact, site foundation components footer" class="Link--secondary">Contact</a></li></ul></div><div class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-lg-0 pl-lg-4"><h2 class="h5 mb-3 text-mono color-text-tertiary text-normal">Company</h2><ul class="list-style-none text-gray f5"><li class="lh-condensed mb-3"><a href="https://github.com/about" data-ga-click="Site Foundation Components, go to About, site foundation components footer" class="Link--secondary">About</a></li><li class="lh-condensed mb-3"><a href="https://github.blog/" data-ga-click="Site Foundation Components, go to Blog, site foundation components footer" class="Link--secondary">Blog</a></li><li class="lh-condensed mb-3"><a href="https://github.com/about/careers" data-ga-click="Site Foundation Components, go to Careers, site foundation components footer" class="Link--secondary">Careers</a></li><li class="lh-condensed mb-3"><a href="https://github.com/about/press" data-ga-click="Site Foundation Components, go to Press, site foundation components footer" class="Link--secondary">Press</a></li><li class="lh-condensed mb-3"><a href="https://shop.github.com/" data-ga-click="Site Foundation Components, go to Shop, site foundation components footer" class="Link--secondary">Shop</a></li></ul></div> </div> </div> <div class="color-bg-subtle"> <div class="container-xl p-responsive-blog f6 py-4 d-sm-flex flex-justify-between flex-row-reverse flex-items-center"> <ul class="list-style-none d-flex flex-items-center mb-3 mb-sm-0 lh-condensed-ultra"> <li class="mr-3 flex-self-start"> <a href="https://www.linkedin.com/company/github" data-ga-click="Blog, go to Linkedin, resources footer" style="color: #959da5;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 18" class="d-block" height="18"> <title>LinkedIn icon</title> <path d="M3.94 2A2 2 0 1 1 2 0a2 2 0 0 1 1.94 2zM4 5.48H0V18h4zm6.32 0H6.34V18h3.94v-6.57c0-3.66 4.77-4 4.77 0V18H19v-7.93c0-6.17-7.06-5.94-8.72-2.91z" fill="currentColor"></path> </svg> <span class="sr-only">GitHub on LinkedIn</span> </a> </li> <li class="mr-3"> <a href="https://www.instagram.com/github/" data-ga-click="Blog, go to Instagram, resources footer" style="color: #959da5;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 169.063 169.063" class="d-block" height="18"> <title>Instagram icon</title> <g> <path d="M122.406,0H46.654C20.929,0,0,20.93,0,46.655v75.752c0,25.726,20.929,46.655,46.654,46.655h75.752 c25.727,0,46.656-20.93,46.656-46.655V46.655C169.063,20.93,148.133,0,122.406,0z M154.063,122.407 c0,17.455-14.201,31.655-31.656,31.655H46.654C29.2,154.063,15,139.862,15,122.407V46.655C15,29.201,29.2,15,46.654,15h75.752 c17.455,0,31.656,14.201,31.656,31.655V122.407z" fill="currentColor"/> <path d="M84.531,40.97c-24.021,0-43.563,19.542-43.563,43.563c0,24.02,19.542,43.561,43.563,43.561s43.563-19.541,43.563-43.561 C128.094,60.512,108.552,40.97,84.531,40.97z M84.531,113.093c-15.749,0-28.563-12.812-28.563-28.561 c0-15.75,12.813-28.563,28.563-28.563s28.563,12.813,28.563,28.563C113.094,100.281,100.28,113.093,84.531,113.093z" fill="currentColor"/> <path d="M129.921,28.251c-2.89,0-5.729,1.17-7.77,3.22c-2.051,2.04-3.23,4.88-3.23,7.78c0,2.891,1.18,5.73,3.23,7.78 c2.04,2.04,4.88,3.22,7.77,3.22c2.9,0,5.73-1.18,7.78-3.22c2.05-2.05,3.22-4.89,3.22-7.78c0-2.9-1.17-5.74-3.22-7.78 C135.661,29.421,132.821,28.251,129.921,28.251z" fill="currentColor"/> </g> </svg> <span class="sr-only">GitHub on Instagram</span> </a> </li> <li class="mr-3"> <a href="https://www.youtube.com/github" data-ga-click="Blog, go to YouTube, resources footer" style="color: #959da5;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.17 13.6" class="d-block" height="16"> <title>YouTube icon</title> <path d="M18.77 2.13A2.4 2.4 0 0 0 17.09.42C15.59 0 9.58 0 9.58 0a57.55 57.55 0 0 0-7.5.4A2.49 2.49 0 0 0 .39 2.13 26.27 26.27 0 0 0 0 6.8a26.15 26.15 0 0 0 .39 4.67 2.43 2.43 0 0 0 1.69 1.71c1.52.42 7.5.42 7.5.42a57.69 57.69 0 0 0 7.51-.4 2.4 2.4 0 0 0 1.68-1.71 25.63 25.63 0 0 0 .4-4.67 24 24 0 0 0-.4-4.69zM7.67 9.71V3.89l5 2.91z" fill="currentColor"></path> </svg> <span class="sr-only">GitHub on YouTube</span> </a> </li> <li class="mr-3"> <a href="https://twitter.com/github" data-ga-click="Blog, go to X, resources footer" style="color: #959da5;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 1227" class="d-block" height="18"> <title>X icon</title> <path xmlns="http://www.w3.org/2000/svg" d="M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z" fill="currentColor"></path> </svg> <span class="sr-only">GitHub on X</span> </a> </li> <li class="mr-3 flex-self-start"> <a href="https://www.tiktok.com/@github" data-ga-click="Blog, go to TikTok, resources footer" style="color: #959da5;"> <svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" class="d-block" height="18"> <title>TikTok icon</title> <path d="M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z" fill="currentColor"/> </svg> <span class="sr-only">GitHub on TikTok</span> </a> </li> <li class="mr-3 flex-self-start"> <a href="https://www.twitch.tv/github" data-ga-click="Blog, go to Twitch, resources footer" style="color: #959da5;"> <svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" class="d-block" height="18"> <title>Twitch icon</title> <path d="M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z" fill="currentColor"/> </svg> <span class="sr-only">GitHub on Twitch</span> </a> </li> <li> <a href="https://github.com/github" data-ga-click="Blog, go to github's org, resources footer" style="color: #959da5;"> <svg height="20" class="octicon octicon-mark-github d-block" alt="" viewBox="0 0 16 16" version="1.1" width="20" aria-hidden="true"> <title>GitHub icon</title> <path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path> </svg> <span class="sr-only">GitHub’s organization on GitHub</span> </a> </li> </ul> <ul class="list-style-none d-flex flex-wrap text-gray"> <li class="mr-3">&copy; 2025 GitHub, Inc.</li> <li class="mr-3"> <a href="https://docs.github.com/en/github/site-policy/github-terms-of-service" data-ga-click="Site Foundation Components, go to terms, site foundation components footer" class="Link--secondary">Terms</a> </li> <li class="mr-3"> <a href="https://docs.github.com/en/github/site-policy/github-privacy-statement" data-ga-click="Site Foundation Components, go to privacy, site foundation components footer" class="Link--secondary">Privacy</a> </li> <li class="mr-3"> <button type="button" class="btn-link Link--secondary" onClick="_ghcc.showPreferences()">Manage Cookies</button> </li> <li class="mr-3"> <button type="button" class="btn-link Link--secondary" onClick="_ghcc.showPreferences()">Do not share my personal information</button> </li> </ul> </div> </div> </footer> </div> <div id="ghcc" style="position: sticky; bottom: 0; z-index: 99999;"></div><script id="mediaelement-js-extra"> var _wpmejsSettings = {"pluginPath":"\/wp-includes\/js\/mediaelement\/","classPrefix":"mejs-","stretching":"responsive","audioShortcodeLibrary":"mediaelement","videoShortcodeLibrary":"mediaelement"}; </script> <script src="https://ghcc.githubassets.com/ghcc.min.js" id="github_cookie_consent-js"></script> <script src="https://js.monitor.azure.com/scripts/c/ms.analytics-web-4.js" id="github_microsoft_analytics-js"></script> <script type="text/javascript" src="https://github.blog/_static/??/wp-content/plugins/gh-cookie-consent-and-tracking/dist/js/cookie-consent-and-tracking.js,/wp-includes/js/dist/hooks.min.js?m=1742816940j" ></script><script src="https://github.blog/wp-includes/js/dist/i18n.min.js?ver=5e580eb46a90c2b997e6" id="wp-i18n-js"></script> <script id="wp-i18n-js-after"> wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); </script> <script type="text/javascript" src="https://github.blog/_static/??/wp-includes/js/dist/vendor/wp-polyfill.min.js,/wp-includes/js/dist/url.min.js?m=1739294330j" ></script><script src="https://github.blog/wp-includes/js/dist/api-fetch.min.js?ver=d387b816bc1ed2042e28" id="wp-api-fetch-js"></script> <script id="wp-api-fetch-js-after"> wp.apiFetch.use( wp.apiFetch.createRootURLMiddleware( "https://github.blog/wp-json/" ) ); wp.apiFetch.nonceMiddleware = wp.apiFetch.createNonceMiddleware( "ee0e870e4f" ); wp.apiFetch.use( wp.apiFetch.nonceMiddleware ); wp.apiFetch.use( wp.apiFetch.mediaUploadMiddleware ); wp.apiFetch.nonceEndpoint = "https://github.blog/wp-admin/admin-ajax.php?action=rest-nonce"; </script> <script type="text/javascript" src="https://github.blog/wp-content/themes/github-2021/dist/js/site-script.js?m=1742816940g" ></script><script integrity="sha256-kAnFXX7lCXF9K2o4g5q1lKyk167yRq6C4TiXWtbgvQw=" crossorigin="anonymous" src="https://analytics.githubassets.com/v1.1.0/hydro-marketing.min.js?ver=6.7.2" id="hydro-analytics-js"></script> <script id="jetpack-stats-js-before"> _stq = window._stq || []; _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"153214340\",\"post\":\"0\",\"tz\":\"-7\",\"srv\":\"github.blog\",\"hp\":\"vip\",\"j\":\"1:14.4.1\"}") ]); _stq.push([ "clickTrackerInit", "153214340", "0" ]); </script> <script src="https://stats.wp.com/e-202513.js" id="jetpack-stats-js" defer data-wp-strategy="defer"></script> <script type="text/javascript" src="https://github.blog/_static/??-eJzTLy/QzcxLzilNSS3WzwKiwtLUokoopZebmaeXVayjj0+Rbm5melFiSSpUsX2uraG5saWRpYmxsUEWAK+aIiE=" ></script><script id="mediaelement-core-js-before"> var mejsL10n = {"language":"en","strings":{"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https:\/\/get.adobe.com\/flashplayer\/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left\/Right Arrow keys to advance one second, Up\/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up\/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions\/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}}; </script> <script src="https://github.blog/wp-includes/js/mediaelement/mediaelement-and-player.min.js?ver=4.2.17" id="mediaelement-core-js"></script> <script type="text/javascript" src="https://github.blog/_static/??-eJx9yzEOgCAMBdALiVUxMQzGsxD5MSUUDUW9vouLi+MbHt2H4bymM0ApKgkCeyQIcv3ACG/FV7TCuY3a0F8syAEFReliwf6eReZ+sm5wo7VdfAATMCx4" ></script><script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"229f494c49","applicationID":"177966165","transactionName":"NgFSYBZXCxJTUEVfCQ9LcVcQXwoPHUdQTgkPC11NSVUNAFxUVFoJBklcVQZTCQ==","queueTime":0,"applicationTime":306,"atts":"GkZFFl5NGE0QUhMMHRwZ","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10