hex_api_key (hex_core v0.7.1) View Source

HTTP API - Keys.

Link to this section Summary

Functions

Adds a new API or repository key.

Deletes an API or repository key.

Deletes all API and repository keys associated with the account.

Gets an API or repository key by name.

Lists the user's or organization's API and repository keys.

Link to this section Types

Specs

api_permission() :: %{
  optional(:domain) => :api,
  optional(:resource) => :read | :write
}

Specs

permission() :: api_permission() | repo_permission() | repos_permission()

Specs

repo_permission() :: %{
  optional(:domain) => :repository,
  optional(:resource) => binary()
}

Specs

repos_permission() :: %{optional(:domain) => :repositories}

Link to this section Functions

Link to this function

add(Config, Name, Permissions)

View Source

Specs

add(:hex_core.config(), binary(), [permission()]) :: :hex_api.response()

Adds a new API or repository key.

Examples:

  > hex_api_key:add(hex_core:default_config(), <<"test">>, [...]).
  {ok, {200, ..., #{
      <<"authing_key">> => true,
      <<"inserted_at">> => <<"2019-02-27T11:15:32Z">>,
      <<"last_use">> =>
          #{<<"ip">> => <<"1.2.3.4">>,
            <<"used_at">> => <<"2019-02-27T14:38:54Z">>,
            <<"user_agent">> => <<"hex_core/0.5.0 (httpc) (OTP/21) (erts/10.2)">>},
      <<"name">> => <<"hex_core">>,
      <<"permissions">> => [#{<<"domain">> => <<"api">>,<<"resource">> => <<"read">>}],
      <<"revoked_at">> => nil,
      <<"updated_at">> => <<"2019-02-27T14:38:54Z">>,
      <<"url">> => <<"https://hex.pm/api/keys/test">>},
      }}}

Specs

delete(:hex_core.config(), binary()) :: :hex_api.response()

Deletes an API or repository key.

Examples:

  > hex_api_key:delete(hex_core:default_config(), <<"test">>).
  {ok, {200, ..., #{
      <<"authing_key">> => true,
      <<"inserted_at">> => <<"2019-02-27T11:15:32Z">>,
      <<"last_use">> =>
          #{<<"ip">> => <<"1.2.3.4">>,
            <<"used_at">> => <<"2019-02-27T14:38:54Z">>,
            <<"user_agent">> => <<"hex_core/0.5.0 (httpc) (OTP/21) (erts/10.2)">>},
      <<"name">> => <<"hex_core">>,
      <<"permissions">> => [#{<<"domain">> => <<"api">>,<<"resource">> => <<"read">>}],
      <<"revoked_at">> => nil,
      <<"updated_at">> => <<"2019-02-27T14:38:54Z">>,
      <<"url">> => <<"https://hex.pm/api/keys/test">>},
      }}}

Specs

delete_all(:hex_core.config()) :: :hex_api.response()

Deletes all API and repository keys associated with the account.

Examples:

  > hex_api_key:delete_all(hex_core:default_config()).
  {ok, {200, ..., [#{
      <<"authing_key">> => true,
      <<"inserted_at">> => <<"2019-02-27T11:15:32Z">>,
      <<"last_use">> =>
          #{<<"ip">> => <<"1.2.3.4">>,
            <<"used_at">> => <<"2019-02-27T14:38:54Z">>,
            <<"user_agent">> => <<"hex_core/0.5.0 (httpc) (OTP/21) (erts/10.2)">>},
      <<"name">> => <<"hex_core">>,
      <<"permissions">> => [#{<<"domain">> => <<"api">>,<<"resource">> => <<"read">>}],
      <<"revoked_at">> => nil,
      <<"updated_at">> => <<"2019-02-27T14:38:54Z">>,
      <<"url">> => <<"https://hex.pm/api/keys/test">>},
      }]}}

Specs

get(:hex_core.config(), binary()) :: :hex_api.response()

Gets an API or repository key by name.

Examples:

  > hex_api_key:get(hex_core:default_config(), <<"test">>).
  {ok, {200, ..., #{
      <<"authing_key">> => true,
      <<"inserted_at">> => <<"2019-02-27T11:15:32Z">>,
      <<"last_use">> =>
          #{<<"ip">> => <<"1.2.3.4">>,
            <<"used_at">> => <<"2019-02-27T14:38:54Z">>,
            <<"user_agent">> => <<"hex_core/0.5.0 (httpc) (OTP/21) (erts/10.2)">>},
      <<"name">> => <<"hex_core">>,
      <<"permissions">> => [#{<<"domain">> => <<"api">>,<<"resource">> => <<"read">>}],
      <<"revoked_at">> => nil,
      <<"updated_at">> => <<"2019-02-27T14:38:54Z">>,
      <<"url">> => <<"https://hex.pm/api/keys/test">>},
      }}}

Specs

list(:hex_core.config()) :: :hex_api.response()

Lists the user's or organization's API and repository keys.

Examples:

  > hex_api_key:list(hex_core:default_config()).
  {ok, {200, ..., [#{
      <<"authing_key">> => true,
      <<"inserted_at">> => <<"2019-02-27T11:15:32Z">>,
      <<"last_use">> =>
          #{<<"ip">> => <<"1.2.3.4">>,
            <<"used_at">> => <<"2019-02-27T14:38:54Z">>,
            <<"user_agent">> => <<"hex_core/0.5.0 (httpc) (OTP/21) (erts/10.2)">>},
      <<"name">> => <<"hex_core">>,
      <<"permissions">> => [#{<<"domain">> => <<"api">>,<<"resource">> => <<"read">>}],
      <<"revoked_at">> => nil,
      <<"updated_at">> => <<"2019-02-27T14:38:54Z">>,
      <<"url">> => <<"https://hex.pm/api/keys/test">>},
      }]}}