Skip to content

Commit 9a19694

Browse files
authored
Add policy and policy rule endpoints (#4)
2 parents 1c0a856 + 29a5c00 commit 9a19694

15 files changed

+1033
-0
lines changed

lib/oktakit/client.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
require 'oktakit/client/groups'
88
require 'oktakit/client/group_rules'
99
require 'oktakit/client/identity_providers'
10+
require 'oktakit/client/policies'
11+
require 'oktakit/client/policy_rules'
1012
require 'oktakit/client/schemas'
1113
require 'oktakit/client/templates'
1214
require 'oktakit/client/users'
@@ -20,6 +22,8 @@ class Client
2022
include Groups
2123
include GroupRules
2224
include IdentityProviders
25+
include Policies
26+
include PolicyRules
2327
include Schemas
2428
include Templates
2529
include Users

lib/oktakit/client/policies.rb

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
module Oktakit
2+
class Client
3+
module Policies
4+
# List Policies
5+
#
6+
# @param options[:query] [Hash] Optional. Query params for request
7+
# @param options[:headers] [Hash] Optional. Header params for the request.
8+
# @param options[:accept] [String] Optional. The content type to accept. Default application/json
9+
# @param options[:content_type] [String] Optional. The content type for the request. Default application/json
10+
# @param options [Hash] Optional. Body params for request.
11+
# @return [Array<Sawyer::Resource>] Array of Policies
12+
# @see https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Policy/#tag/Policy/operation/listPolicies
13+
# @example
14+
# Oktakit.list_policies(query: {type: 'IDP_DISCOVERY'})
15+
def list_policies(options = {})
16+
get("/policies", options)
17+
end
18+
19+
# Create a policy
20+
#
21+
# @param options[:query] [Hash] Optional. Query params for request
22+
# @param options[:headers] [Hash] Optional. Header params for the request.
23+
# @param options[:accept] [String] Optional. The content type to accept. Default application/json
24+
# @param options[:content_type] [String] Optional. The content type for the request. Default application/json
25+
# @param options [Hash] Optional. Body params for request.
26+
# @return [Sawyer::Resource] The created Policy
27+
# @see https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Policy/#tag/Policy/operation/createPolicy
28+
# @example
29+
# Oktakit.add_policy
30+
def add_policy(options = {})
31+
post("/policies", options)
32+
end
33+
34+
# Retrieve a policy
35+
#
36+
# @param options[:query] [Hash] Optional. Query params for request
37+
# @param options[:headers] [Hash] Optional. Header params for the request.
38+
# @param options[:accept] [String] Optional. The content type to accept. Default application/json
39+
# @param options[:content_type] [String] Optional. The content type for the request. Default application/json
40+
# @param options [Hash] Optional. Body params for request.
41+
# @return [Sawyer::Resource] Policy
42+
# @see https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Policy/#tag/Policy/operation/getPolicy
43+
# @example
44+
# Oktakit.get_policy('id')
45+
def get_policy(id, options = {})
46+
get("/policies/#{id}", options)
47+
end
48+
49+
# Update a policy
50+
#
51+
# @param options[:query] [Hash] Optional. Query params for request
52+
# @param options[:headers] [Hash] Optional. Header params for the request.
53+
# @param options[:accept] [String] Optional. The content type to accept. Default application/json
54+
# @param options[:content_type] [String] Optional. The content type for the request. Default application/json
55+
# @param options [Hash] Optional. Body params for request.
56+
# @return [Sawyer::Resource] The updated Policy
57+
# @see https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Policy/#tag/Policy/operation/replacePolicy
58+
# @example
59+
# Oktakit.update_policy('id', options)
60+
def update_policy(id, options = {})
61+
put("/policies/#{id}", options)
62+
end
63+
64+
# Delete a policy
65+
#
66+
# @param options[:query] [Hash] Optional. Query params for request
67+
# @param options[:headers] [Hash] Optional. Header params for the request.
68+
# @param options[:accept] [String] Optional. The content type to accept. Default application/json
69+
# @param options[:content_type] [String] Optional. The content type for the request. Default application/json
70+
# @param options [Hash] Optional. Body params for request.
71+
# @return 204 No content
72+
# @see https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Policy/#tag/Policy/operation/deletePolicy
73+
# @example
74+
# Oktakit.delete_policy('id', options)
75+
def delete_policy(id, options = {})
76+
delete("/policies/#{id}", options)
77+
end
78+
79+
end
80+
end
81+
end

lib/oktakit/client/policy_rules.rb

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
module Oktakit
2+
class Client
3+
module PolicyRules
4+
# List Policy Rules
5+
#
6+
# @param policy_id [string] Policy ID
7+
# @param options[:query] [Hash] Optional. Query params for request
8+
# @param options[:headers] [Hash] Optional. Header params for the request.
9+
# @param options[:accept] [String] Optional. The content type to accept. Default application/json
10+
# @param options[:content_type] [String] Optional. The content type for the request. Default application/json
11+
# @param options [Hash] Optional. Body params for request.
12+
# @return [Array<Sawyer::Resource>] Array of Policy Rules
13+
# @see https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Policy/#tag/Policy/operation/listPolicyRules
14+
# @example
15+
# Oktakit.list_policy_rules('policy_id')
16+
def list_policy_rules(policy_id, options = {})
17+
get("/policies/#{policy_id}/rules", options)
18+
end
19+
20+
# Create Policy Rule
21+
#
22+
# @param policy_id [string] Policy ID
23+
# @param options[:query] [Hash] Optional. Query params for request
24+
# @param options[:headers] [Hash] Optional. Header params for the request.
25+
# @param options[:accept] [String] Optional. The content type to accept. Default application/json
26+
# @param options[:content_type] [String] Optional. The content type for the request. Default application/json
27+
# @param options [Hash] Optional. Body params for request.
28+
# @return [Sawyer::Resource] The created Policy Rule
29+
# @see https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Policy/#tag/Policy/operation/createPolicyRule
30+
# @example
31+
# Oktakit.add_policy_rule('policy_id', {})
32+
def add_policy_rule(policy_id, options = {})
33+
post("/policies/#{policy_id}/rules", options)
34+
end
35+
36+
# Get Policy Rule
37+
#
38+
# @param policy_id [string] Policy ID
39+
# @param rule_id [string] Rule ID
40+
# @param options[:query] [Hash] Optional. Query params for request
41+
# @param options[:headers] [Hash] Optional. Header params for the request.
42+
# @param options[:accept] [String] Optional. The content type to accept. Default application/json
43+
# @param options[:content_type] [String] Optional. The content type for the request. Default application/json
44+
# @param options [Hash] Optional. Body params for request.
45+
# @return [Sawyer::Resource] Policy Rule
46+
# @see https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Policy/#tag/Policy/operation/getPolicyRule
47+
# @example
48+
# Oktakit.get_policy_rule('policy_id', 'rule_id', {})
49+
def get_policy_rule(policy_id, rule_id, options = {})
50+
get("/policies/#{policy_id}/rules/#{rule_id}", options)
51+
end
52+
53+
# Update Policy Rule
54+
#
55+
# @param policy_id [string] Policy ID
56+
# @param rule_id [string] Rule ID
57+
# @param options[:query] [Hash] Optional. Query params for request
58+
# @param options[:headers] [Hash] Optional. Header params for the request.
59+
# @param options[:accept] [String] Optional. The content type to accept. Default application/json
60+
# @param options[:content_type] [String] Optional. The content type for the request. Default application/json
61+
# @param options [Hash] Optional. Body params for request.
62+
# @return [Sawyer::Resource] Updated policy rule
63+
# @see https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Policy/#tag/Policy/operation/replacePolicyRule
64+
# @example
65+
# Oktakit.update_policy_rule('policy_id', 'rule_id', {})
66+
def update_policy_rule(policy_id, rule_id, options = {})
67+
put("/policies/#{policy_id}/rules/#{rule_id}", options)
68+
end
69+
70+
# Delete a Policy Rule
71+
#
72+
# @param policy_id [string] Policy ID
73+
# @param rule_id [string] Rule ID
74+
# @param options[:query] [Hash] Optional. Query params for request
75+
# @param options[:headers] [Hash] Optional. Header params for the request.
76+
# @param options[:accept] [String] Optional. The content type to accept. Default application/json
77+
# @param options[:content_type] [String] Optional. The content type for the request. Default application/json
78+
# @param options [Hash] Optional. Body params for request.
79+
# @return 204 No content
80+
# @see https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Policy/#tag/Policy/operation/deletePolicyRule
81+
# @example
82+
# Oktakit.delete_policy_rule('policy_id', 'rule_id', {})
83+
def delete_policy_rule(policy_id, rule_id, options = {})
84+
delete("/policies/#{policy_id}/rules/#{rule_id}", options)
85+
end
86+
87+
end
88+
end
89+
end

spec/cassettes/add_policy.yml

Lines changed: 67 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

spec/cassettes/add_policy_rule.yml

Lines changed: 68 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

spec/cassettes/delete_policy.yml

Lines changed: 67 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)