lib/operations/oidc.ex

defmodule GitHub.Oidc do
  @moduledoc """
  Provides API endpoints related to oidc
  """

  @default_client GitHub.Client

  @doc """
  Get the customization template for an OIDC subject claim for an organization

  Gets the customization template for an OpenID Connect (OIDC) subject claim.

  OAuth app tokens and personal access tokens (classic) need the `read:org` scope to use this endpoint.

  ## Resources

    * [API method documentation](https://docs.github.com/rest/actions/oidc#get-the-customization-template-for-an-oidc-subject-claim-for-an-organization)

  """
  @spec get_oidc_custom_sub_template_for_org(String.t(), keyword) ::
          {:ok, GitHub.OIDCCustomSub.t()} | {:error, GitHub.Error.t()}
  def get_oidc_custom_sub_template_for_org(org, opts \\ []) do
    client = opts[:client] || @default_client

    client.request(%{
      args: [org: org],
      call: {GitHub.Oidc, :get_oidc_custom_sub_template_for_org},
      url: "/orgs/#{org}/actions/oidc/customization/sub",
      method: :get,
      response: [{200, {GitHub.OIDCCustomSub, :t}}],
      opts: opts
    })
  end

  @doc """
  Set the customization template for an OIDC subject claim for an organization

  Creates or updates the customization template for an OpenID Connect (OIDC) subject claim.

  OAuth app tokens and personal access tokens (classic) need the `write:org` scope to use this endpoint.

  ## Resources

    * [API method documentation](https://docs.github.com/rest/actions/oidc#set-the-customization-template-for-an-oidc-subject-claim-for-an-organization)

  """
  @spec update_oidc_custom_sub_template_for_org(String.t(), GitHub.OIDCCustomSub.t(), keyword) ::
          {:ok, GitHub.EmptyObject.t()} | {:error, GitHub.Error.t()}
  def update_oidc_custom_sub_template_for_org(org, body, opts \\ []) do
    client = opts[:client] || @default_client

    client.request(%{
      args: [org: org, body: body],
      call: {GitHub.Oidc, :update_oidc_custom_sub_template_for_org},
      url: "/orgs/#{org}/actions/oidc/customization/sub",
      body: body,
      method: :put,
      request: [{"application/json", {GitHub.OIDCCustomSub, :t}}],
      response: [
        {201, {GitHub.EmptyObject, :t}},
        {403, {GitHub.BasicError, :t}},
        {404, {GitHub.BasicError, :t}}
      ],
      opts: opts
    })
  end
end