// Copyright 2023 The go-github AUTHORS. All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package github

import (
	
	
)

// OIDCSubjectClaimCustomTemplate represents an OIDC subject claim customization template.
type OIDCSubjectClaimCustomTemplate struct {
	UseDefault       *bool    `json:"use_default,omitempty"`
	IncludeClaimKeys []string `json:"include_claim_keys,omitempty"`
}

// GetOrgOIDCSubjectClaimCustomTemplate gets the subject claim customization template for an organization.
//
// GitHub API docs: https://docs.github.com/rest/actions/oidc#get-the-customization-template-for-an-oidc-subject-claim-for-an-organization
//
//meta:operation GET /orgs/{org}/actions/oidc/customization/sub
func ( *ActionsService) ( context.Context,  string) (*OIDCSubjectClaimCustomTemplate, *Response, error) {
	 := fmt.Sprintf("orgs/%v/actions/oidc/customization/sub", )
	return .getOIDCSubjectClaimCustomTemplate(, )
}

// GetRepoOIDCSubjectClaimCustomTemplate gets the subject claim customization template for a repository.
//
// GitHub API docs: https://docs.github.com/rest/actions/oidc#get-the-customization-template-for-an-oidc-subject-claim-for-a-repository
//
//meta:operation GET /repos/{owner}/{repo}/actions/oidc/customization/sub
func ( *ActionsService) ( context.Context, ,  string) (*OIDCSubjectClaimCustomTemplate, *Response, error) {
	 := fmt.Sprintf("repos/%v/%v/actions/oidc/customization/sub", , )
	return .getOIDCSubjectClaimCustomTemplate(, )
}

func ( *ActionsService) ( context.Context,  string) (*OIDCSubjectClaimCustomTemplate, *Response, error) {
	,  := .client.NewRequest("GET", , nil)
	if  != nil {
		return nil, nil, 
	}

	 := new(OIDCSubjectClaimCustomTemplate)
	,  := .client.Do(, , )
	if  != nil {
		return nil, , 
	}

	return , , nil
}

// SetOrgOIDCSubjectClaimCustomTemplate sets the subject claim customization for an organization.
//
// GitHub API docs: https://docs.github.com/rest/actions/oidc#set-the-customization-template-for-an-oidc-subject-claim-for-an-organization
//
//meta:operation PUT /orgs/{org}/actions/oidc/customization/sub
func ( *ActionsService) ( context.Context,  string,  *OIDCSubjectClaimCustomTemplate) (*Response, error) {
	 := fmt.Sprintf("orgs/%v/actions/oidc/customization/sub", )
	return .setOIDCSubjectClaimCustomTemplate(, , )
}

// SetRepoOIDCSubjectClaimCustomTemplate sets the subject claim customization for a repository.
//
// GitHub API docs: https://docs.github.com/rest/actions/oidc#set-the-customization-template-for-an-oidc-subject-claim-for-a-repository
//
//meta:operation PUT /repos/{owner}/{repo}/actions/oidc/customization/sub
func ( *ActionsService) ( context.Context, ,  string,  *OIDCSubjectClaimCustomTemplate) (*Response, error) {
	 := fmt.Sprintf("repos/%v/%v/actions/oidc/customization/sub", , )
	return .setOIDCSubjectClaimCustomTemplate(, , )
}

func ( *ActionsService) ( context.Context,  string,  *OIDCSubjectClaimCustomTemplate) (*Response, error) {
	,  := .client.NewRequest("PUT", , )
	if  != nil {
		return nil, 
	}

	return .client.Do(, , nil)
}