View Source hex_api_key (hex_core v0.10.3)

Hex HTTP API - Keys.

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.

Types

permission/0

-type permission() :: #{binary() := binary()}.

Functions

add(Config, Name, Permissions)

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

Adds a new API or repository key.

A permission is a map of #{<<"domain">> => Domain, <<"resource"> => Resource}.

Valid Domain values: <<"api">> | <<"repository">> | <<"repositories">>.

Valid Resource values: <<"read">> | <<"write">>.

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">>},
      }}}

delete(Config, Name)

-spec 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">>},
      }}}

delete_all(Config)

-spec 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">>},
      }]}}

get(Config, Name)

-spec 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">>},
      }}}

list(Config)

-spec 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">>},
      }]}}