cadenya 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +6 -6
  4. data/lib/cadenya/client.rb +4 -0
  5. data/lib/cadenya/internal/cursor_pagination.rb +2 -2
  6. data/lib/cadenya/models/ai_provider_key.rb +30 -0
  7. data/lib/cadenya/models/ai_provider_key_create_params.rb +41 -0
  8. data/lib/cadenya/models/ai_provider_key_delete_params.rb +26 -0
  9. data/lib/cadenya/models/ai_provider_key_list_params.rb +61 -0
  10. data/lib/cadenya/models/ai_provider_key_retrieve_params.rb +26 -0
  11. data/lib/cadenya/models/ai_provider_key_spec.rb +36 -0
  12. data/lib/cadenya/models/ai_provider_key_update_params.rb +56 -0
  13. data/lib/cadenya/models.rb +14 -0
  14. data/lib/cadenya/resources/ai_provider_keys.rb +168 -0
  15. data/lib/cadenya/version.rb +1 -1
  16. data/lib/cadenya.rb +8 -0
  17. data/rbi/cadenya/client.rbi +3 -0
  18. data/rbi/cadenya/models/ai_provider_key.rbi +51 -0
  19. data/rbi/cadenya/models/ai_provider_key_create_params.rbi +65 -0
  20. data/rbi/cadenya/models/ai_provider_key_delete_params.rbi +43 -0
  21. data/rbi/cadenya/models/ai_provider_key_list_params.rbi +96 -0
  22. data/rbi/cadenya/models/ai_provider_key_retrieve_params.rbi +46 -0
  23. data/rbi/cadenya/models/ai_provider_key_spec.rbi +56 -0
  24. data/rbi/cadenya/models/ai_provider_key_update_params.rbi +82 -0
  25. data/rbi/cadenya/models.rbi +14 -0
  26. data/rbi/cadenya/resources/ai_provider_keys.rbi +125 -0
  27. data/sig/cadenya/client.rbs +2 -0
  28. data/sig/cadenya/models/ai_provider_key.rbs +22 -0
  29. data/sig/cadenya/models/ai_provider_key_create_params.rbs +36 -0
  30. data/sig/cadenya/models/ai_provider_key_delete_params.rbs +28 -0
  31. data/sig/cadenya/models/ai_provider_key_list_params.rbs +61 -0
  32. data/sig/cadenya/models/ai_provider_key_retrieve_params.rbs +28 -0
  33. data/sig/cadenya/models/ai_provider_key_spec.rbs +28 -0
  34. data/sig/cadenya/models/ai_provider_key_update_params.rbs +54 -0
  35. data/sig/cadenya/models.rbs +14 -0
  36. data/sig/cadenya/resources/ai_provider_keys.rbs +45 -0
  37. metadata +26 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7dff0947b39a815faaea2a4f68747c1d0117318d8f2aee08f8bca4cab40b69f7
4
- data.tar.gz: ec5c0bb41033ed07ab07d33fd24dac1853b9ec65280dc8493902646d62e5eb03
3
+ metadata.gz: e7f15c89788992e84faa1b1a059033314f7c115317be1f0fdba0e49793bc0aa6
4
+ data.tar.gz: d56587810401e084e8b5497254d6a6680fc22b3eff1bf70af6bc20461a3b19e1
5
5
  SHA512:
6
- metadata.gz: 146f613ac26f3669be288789e44d5727defcbf3373b5fe74c0b5cd11352476be830358a4def179cddb144192629ad7e14c798cb25ac48907c7379879e6ce5a60
7
- data.tar.gz: 553296baa57d871c6f99976e480f3f67c60cb1afc6fda396816a4a3c4f263e3ceb588ebb64f9ce2070a53cbf1ecf03ba14c0b90d9f0ef48773786715ea3c04e2
6
+ metadata.gz: c696765a5ffb6e7c97c6b3cb729b711fe424626b45e6e0732ef37a5dc9b56bde28f8ca54d0db305657bf459b4e3dfa3081f905e26a17a6e503b3b5709b82ef38
7
+ data.tar.gz: 9f178edbcaf810c598ccf931ee62bc8c68479f41128c63143852a255b673dcd69e1306706407cf7c0bb7f2ced5c8c581be9d45be426d04ab0306e3ce13e934cc
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.0 (2026-06-07)
4
+
5
+ Full Changelog: [v0.3.0...v0.4.0](https://github.com/cadenya/cadenya-ruby/compare/v0.3.0...v0.4.0)
6
+
7
+ ### Features
8
+
9
+ * Add AI Provider CRUD endpoints ([91caf5c](https://github.com/cadenya/cadenya-ruby/commit/91caf5c762a8e75460076b4a9a864c9a34345720))
10
+
3
11
  ## 0.3.0 (2026-06-05)
4
12
 
5
13
  Full Changelog: [v0.2.0...v0.3.0](https://github.com/cadenya/cadenya-ruby/compare/v0.2.0...v0.3.0)
data/README.md CHANGED
@@ -26,7 +26,7 @@ To use this gem, install via Bundler by adding the following to your application
26
26
  <!-- x-release-please-start-version -->
27
27
 
28
28
  ```ruby
29
- gem "cadenya", "~> 0.3.0"
29
+ gem "cadenya", "~> 0.4.0"
30
30
  ```
31
31
 
32
32
  <!-- x-release-please-end -->
@@ -53,15 +53,15 @@ List methods in the Cadenya API are paginated.
53
53
  This library provides auto-paginating iterators with each list response, so you do not have to request successive pages manually:
54
54
 
55
55
  ```ruby
56
- page = cadenya.agents.list
56
+ page = cadenya.ai_provider_keys.list
57
57
 
58
58
  # Fetch single item from page.
59
- agent = page.items[0]
60
- puts(agent.metadata)
59
+ ai_provider_key = page.items[0]
60
+ puts(ai_provider_key.metadata)
61
61
 
62
62
  # Automatically fetches more pages as needed.
63
- page.auto_paging_each do |agent|
64
- puts(agent.metadata)
63
+ page.auto_paging_each do |ai_provider_key|
64
+ puts(ai_provider_key.metadata)
65
65
  end
66
66
  ```
67
67
 
@@ -21,6 +21,9 @@ module Cadenya
21
21
  # @return [String, nil]
22
22
  attr_reader :webhook_key
23
23
 
24
+ # @return [Cadenya::Resources::AIProviderKeys]
25
+ attr_reader :ai_provider_keys
26
+
24
27
  # Manage the authenticated account. Accounts are the top-level organizational unit
25
28
  # and contain one or more workspaces.
26
29
  # @return [Cadenya::Resources::Account]
@@ -163,6 +166,7 @@ module Cadenya
163
166
  headers: headers
164
167
  )
165
168
 
169
+ @ai_provider_keys = Cadenya::Resources::AIProviderKeys.new(client: self)
166
170
  @account = Cadenya::Resources::Account.new(client: self)
167
171
  @agents = Cadenya::Resources::Agents.new(client: self)
168
172
  @objectives = Cadenya::Resources::Objectives.new(client: self)
@@ -10,8 +10,8 @@ module Cadenya
10
10
  # end
11
11
  #
12
12
  # @example
13
- # cursor_pagination.auto_paging_each do |agent|
14
- # puts(agent)
13
+ # cursor_pagination.auto_paging_each do |ai_provider_key|
14
+ # puts(ai_provider_key)
15
15
  # end
16
16
  class CursorPagination
17
17
  include Cadenya::Internal::Type::BasePage
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cadenya
4
+ module Models
5
+ # @see Cadenya::Resources::AIProviderKeys#create
6
+ class AIProviderKey < Cadenya::Internal::Type::BaseModel
7
+ # @!attribute metadata
8
+ # Standard metadata for persistent, named resources (e.g., agents, tools, prompts)
9
+ #
10
+ # @return [Cadenya::Models::ResourceMetadata]
11
+ required :metadata, -> { Cadenya::ResourceMetadata }
12
+
13
+ # @!attribute spec
14
+ #
15
+ # @return [Cadenya::Models::AIProviderKeySpec]
16
+ required :spec, -> { Cadenya::AIProviderKeySpec }
17
+
18
+ # @!method initialize(metadata:, spec:)
19
+ # Some parameter documentations has been truncated, see
20
+ # {Cadenya::Models::AIProviderKey} for more details.
21
+ #
22
+ # AIProviderKey is a customer-provided (BYOK) credential for an AI provider,
23
+ # scoped to a workspace. The secret value is never returned in responses.
24
+ #
25
+ # @param metadata [Cadenya::Models::ResourceMetadata] Standard metadata for persistent, named resources (e.g., agents, tools, prompts)
26
+ #
27
+ # @param spec [Cadenya::Models::AIProviderKeySpec]
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cadenya
4
+ module Models
5
+ # @see Cadenya::Resources::AIProviderKeys#create
6
+ class AIProviderKeyCreateParams < Cadenya::Internal::Type::BaseModel
7
+ extend Cadenya::Internal::Type::RequestParameters::Converter
8
+ include Cadenya::Internal::Type::RequestParameters
9
+
10
+ # @!attribute workspace_id
11
+ #
12
+ # @return [String]
13
+ required :workspace_id, String
14
+
15
+ # @!attribute metadata
16
+ # CreateResourceMetadata contains the user-provided fields for creating a
17
+ # workspace-scoped resource. Read-only fields (id, account_id, workspace_id,
18
+ # profile_id, created_at) are excluded since they are set by the server.
19
+ #
20
+ # @return [Cadenya::Models::CreateResourceMetadata]
21
+ required :metadata, -> { Cadenya::CreateResourceMetadata }
22
+
23
+ # @!attribute spec
24
+ #
25
+ # @return [Cadenya::Models::AIProviderKeySpec]
26
+ required :spec, -> { Cadenya::AIProviderKeySpec }
27
+
28
+ # @!method initialize(workspace_id:, metadata:, spec:, request_options: {})
29
+ # Some parameter documentations has been truncated, see
30
+ # {Cadenya::Models::AIProviderKeyCreateParams} for more details.
31
+ #
32
+ # @param workspace_id [String]
33
+ #
34
+ # @param metadata [Cadenya::Models::CreateResourceMetadata] CreateResourceMetadata contains the user-provided fields for creating
35
+ #
36
+ # @param spec [Cadenya::Models::AIProviderKeySpec]
37
+ #
38
+ # @param request_options [Cadenya::RequestOptions, Hash{Symbol=>Object}]
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cadenya
4
+ module Models
5
+ # @see Cadenya::Resources::AIProviderKeys#delete
6
+ class AIProviderKeyDeleteParams < Cadenya::Internal::Type::BaseModel
7
+ extend Cadenya::Internal::Type::RequestParameters::Converter
8
+ include Cadenya::Internal::Type::RequestParameters
9
+
10
+ # @!attribute workspace_id
11
+ #
12
+ # @return [String]
13
+ required :workspace_id, String
14
+
15
+ # @!attribute id
16
+ #
17
+ # @return [String]
18
+ required :id, String
19
+
20
+ # @!method initialize(workspace_id:, id:, request_options: {})
21
+ # @param workspace_id [String]
22
+ # @param id [String]
23
+ # @param request_options [Cadenya::RequestOptions, Hash{Symbol=>Object}]
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cadenya
4
+ module Models
5
+ # @see Cadenya::Resources::AIProviderKeys#list
6
+ class AIProviderKeyListParams < Cadenya::Internal::Type::BaseModel
7
+ extend Cadenya::Internal::Type::RequestParameters::Converter
8
+ include Cadenya::Internal::Type::RequestParameters
9
+
10
+ # @!attribute workspace_id
11
+ #
12
+ # @return [String]
13
+ required :workspace_id, String
14
+
15
+ # @!attribute cursor
16
+ # Pagination cursor from previous response
17
+ #
18
+ # @return [String, nil]
19
+ optional :cursor, String
20
+
21
+ # @!attribute limit
22
+ # Maximum number of results to return
23
+ #
24
+ # @return [Integer, nil]
25
+ optional :limit, Integer
26
+
27
+ # @!attribute prefix
28
+ # Filter expression (query param: prefix)
29
+ #
30
+ # @return [String, nil]
31
+ optional :prefix, String
32
+
33
+ # @!attribute query
34
+ # Free-form search query
35
+ #
36
+ # @return [String, nil]
37
+ optional :query, String
38
+
39
+ # @!attribute sort_order
40
+ # Sort order for results (asc or desc by creation time)
41
+ #
42
+ # @return [String, nil]
43
+ optional :sort_order, String
44
+
45
+ # @!method initialize(workspace_id:, cursor: nil, limit: nil, prefix: nil, query: nil, sort_order: nil, request_options: {})
46
+ # @param workspace_id [String]
47
+ #
48
+ # @param cursor [String] Pagination cursor from previous response
49
+ #
50
+ # @param limit [Integer] Maximum number of results to return
51
+ #
52
+ # @param prefix [String] Filter expression (query param: prefix)
53
+ #
54
+ # @param query [String] Free-form search query
55
+ #
56
+ # @param sort_order [String] Sort order for results (asc or desc by creation time)
57
+ #
58
+ # @param request_options [Cadenya::RequestOptions, Hash{Symbol=>Object}]
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cadenya
4
+ module Models
5
+ # @see Cadenya::Resources::AIProviderKeys#retrieve
6
+ class AIProviderKeyRetrieveParams < Cadenya::Internal::Type::BaseModel
7
+ extend Cadenya::Internal::Type::RequestParameters::Converter
8
+ include Cadenya::Internal::Type::RequestParameters
9
+
10
+ # @!attribute workspace_id
11
+ #
12
+ # @return [String]
13
+ required :workspace_id, String
14
+
15
+ # @!attribute id
16
+ #
17
+ # @return [String]
18
+ required :id, String
19
+
20
+ # @!method initialize(workspace_id:, id:, request_options: {})
21
+ # @param workspace_id [String]
22
+ # @param id [String]
23
+ # @param request_options [Cadenya::RequestOptions, Hash{Symbol=>Object}]
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cadenya
4
+ module Models
5
+ class AIProviderKeySpec < Cadenya::Internal::Type::BaseModel
6
+ # @!attribute api_key
7
+ # The provider credential. Accepted on create/update; never populated in responses
8
+ # (the server returns an empty value to avoid leaking it).
9
+ #
10
+ # @return [String, nil]
11
+ optional :api_key, String, api_name: :apiKey
12
+
13
+ # @!attribute provider
14
+ # The AI provider this key authenticates against. Currently "openrouter".
15
+ #
16
+ # @return [String, nil]
17
+ optional :provider, String
18
+
19
+ # @!attribute region
20
+ # The provider region. "us" or "eu". Defaults to "us".
21
+ #
22
+ # @return [String, nil]
23
+ optional :region, String
24
+
25
+ # @!method initialize(api_key: nil, provider: nil, region: nil)
26
+ # Some parameter documentations has been truncated, see
27
+ # {Cadenya::Models::AIProviderKeySpec} for more details.
28
+ #
29
+ # @param api_key [String] The provider credential. Accepted on create/update; never populated in
30
+ #
31
+ # @param provider [String] The AI provider this key authenticates against. Currently "openrouter".
32
+ #
33
+ # @param region [String] The provider region. "us" or "eu". Defaults to "us".
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cadenya
4
+ module Models
5
+ # @see Cadenya::Resources::AIProviderKeys#update
6
+ class AIProviderKeyUpdateParams < Cadenya::Internal::Type::BaseModel
7
+ extend Cadenya::Internal::Type::RequestParameters::Converter
8
+ include Cadenya::Internal::Type::RequestParameters
9
+
10
+ # @!attribute workspace_id
11
+ #
12
+ # @return [String]
13
+ required :workspace_id, String
14
+
15
+ # @!attribute id
16
+ #
17
+ # @return [String]
18
+ required :id, String
19
+
20
+ # @!attribute metadata
21
+ # UpdateResourceMetadata contains the user-provided fields for updating a
22
+ # workspace-scoped resource. Read-only fields (id, account_id, workspace_id,
23
+ # profile_id, created_at) are excluded since they are set by the server.
24
+ #
25
+ # @return [Cadenya::Models::UpdateResourceMetadata, nil]
26
+ optional :metadata, -> { Cadenya::UpdateResourceMetadata }
27
+
28
+ # @!attribute spec
29
+ #
30
+ # @return [Cadenya::Models::AIProviderKeySpec, nil]
31
+ optional :spec, -> { Cadenya::AIProviderKeySpec }
32
+
33
+ # @!attribute update_mask
34
+ # Fields to update.
35
+ #
36
+ # @return [String, nil]
37
+ optional :update_mask, String, api_name: :updateMask
38
+
39
+ # @!method initialize(workspace_id:, id:, metadata: nil, spec: nil, update_mask: nil, request_options: {})
40
+ # Some parameter documentations has been truncated, see
41
+ # {Cadenya::Models::AIProviderKeyUpdateParams} for more details.
42
+ #
43
+ # @param workspace_id [String]
44
+ #
45
+ # @param id [String]
46
+ #
47
+ # @param metadata [Cadenya::Models::UpdateResourceMetadata] UpdateResourceMetadata contains the user-provided fields for updating
48
+ #
49
+ # @param spec [Cadenya::Models::AIProviderKeySpec]
50
+ #
51
+ # @param update_mask [String] Fields to update.
52
+ #
53
+ # @param request_options [Cadenya::RequestOptions, Hash{Symbol=>Object}]
54
+ end
55
+ end
56
+ end
@@ -75,6 +75,20 @@ module Cadenya
75
75
 
76
76
  AgentVariationEntry = Cadenya::Models::AgentVariationEntry
77
77
 
78
+ AIProviderKey = Cadenya::Models::AIProviderKey
79
+
80
+ AIProviderKeyCreateParams = Cadenya::Models::AIProviderKeyCreateParams
81
+
82
+ AIProviderKeyDeleteParams = Cadenya::Models::AIProviderKeyDeleteParams
83
+
84
+ AIProviderKeyListParams = Cadenya::Models::AIProviderKeyListParams
85
+
86
+ AIProviderKeyRetrieveParams = Cadenya::Models::AIProviderKeyRetrieveParams
87
+
88
+ AIProviderKeySpec = Cadenya::Models::AIProviderKeySpec
89
+
90
+ AIProviderKeyUpdateParams = Cadenya::Models::AIProviderKeyUpdateParams
91
+
78
92
  APIKey = Cadenya::Models::APIKey
79
93
 
80
94
  APIKeyCreateParams = Cadenya::Models::APIKeyCreateParams
@@ -0,0 +1,168 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cadenya
4
+ module Resources
5
+ class AIProviderKeys
6
+ # Some parameter documentations has been truncated, see
7
+ # {Cadenya::Models::AIProviderKeyCreateParams} for more details.
8
+ #
9
+ # Creates a new customer-provided AI provider key in the workspace
10
+ #
11
+ # @overload create(workspace_id, metadata:, spec:, request_options: {})
12
+ #
13
+ # @param workspace_id [String] The workspace that will own this key.
14
+ #
15
+ # @param metadata [Cadenya::Models::CreateResourceMetadata] CreateResourceMetadata contains the user-provided fields for creating
16
+ #
17
+ # @param spec [Cadenya::Models::AIProviderKeySpec]
18
+ #
19
+ # @param request_options [Cadenya::RequestOptions, Hash{Symbol=>Object}, nil]
20
+ #
21
+ # @return [Cadenya::Models::AIProviderKey]
22
+ #
23
+ # @see Cadenya::Models::AIProviderKeyCreateParams
24
+ def create(workspace_id, params)
25
+ parsed, options = Cadenya::AIProviderKeyCreateParams.dump_request(params)
26
+ @client.request(
27
+ method: :post,
28
+ path: ["v1/workspaces/%1$s/ai_provider_keys", workspace_id],
29
+ body: parsed,
30
+ model: Cadenya::AIProviderKey,
31
+ options: options
32
+ )
33
+ end
34
+
35
+ # Retrieves an AI provider key by ID from the workspace
36
+ #
37
+ # @overload retrieve(id, workspace_id:, request_options: {})
38
+ #
39
+ # @param id [String] The key to retrieve.
40
+ #
41
+ # @param workspace_id [String] The workspace the key belongs to.
42
+ #
43
+ # @param request_options [Cadenya::RequestOptions, Hash{Symbol=>Object}, nil]
44
+ #
45
+ # @return [Cadenya::Models::AIProviderKey]
46
+ #
47
+ # @see Cadenya::Models::AIProviderKeyRetrieveParams
48
+ def retrieve(id, params)
49
+ parsed, options = Cadenya::AIProviderKeyRetrieveParams.dump_request(params)
50
+ workspace_id =
51
+ parsed.delete(:workspace_id) do
52
+ raise ArgumentError.new("missing required path argument #{_1}")
53
+ end
54
+ @client.request(
55
+ method: :get,
56
+ path: ["v1/workspaces/%1$s/ai_provider_keys/%2$s", workspace_id, id],
57
+ model: Cadenya::AIProviderKey,
58
+ options: options
59
+ )
60
+ end
61
+
62
+ # Some parameter documentations has been truncated, see
63
+ # {Cadenya::Models::AIProviderKeyUpdateParams} for more details.
64
+ #
65
+ # Updates an AI provider key's name or key value in the workspace
66
+ #
67
+ # @overload update(id, workspace_id:, metadata: nil, spec: nil, update_mask: nil, request_options: {})
68
+ #
69
+ # @param id [String] Path param: The key to update.
70
+ #
71
+ # @param workspace_id [String] Path param: The workspace the key belongs to.
72
+ #
73
+ # @param metadata [Cadenya::Models::UpdateResourceMetadata] Body param: UpdateResourceMetadata contains the user-provided fields for updatin
74
+ #
75
+ # @param spec [Cadenya::Models::AIProviderKeySpec] Body param
76
+ #
77
+ # @param update_mask [String] Body param: Fields to update.
78
+ #
79
+ # @param request_options [Cadenya::RequestOptions, Hash{Symbol=>Object}, nil]
80
+ #
81
+ # @return [Cadenya::Models::AIProviderKey]
82
+ #
83
+ # @see Cadenya::Models::AIProviderKeyUpdateParams
84
+ def update(id, params)
85
+ parsed, options = Cadenya::AIProviderKeyUpdateParams.dump_request(params)
86
+ workspace_id =
87
+ parsed.delete(:workspace_id) do
88
+ raise ArgumentError.new("missing required path argument #{_1}")
89
+ end
90
+ @client.request(
91
+ method: :patch,
92
+ path: ["v1/workspaces/%1$s/ai_provider_keys/%2$s", workspace_id, id],
93
+ body: parsed,
94
+ model: Cadenya::AIProviderKey,
95
+ options: options
96
+ )
97
+ end
98
+
99
+ # Lists all customer-provided AI provider keys in the workspace
100
+ #
101
+ # @overload list(workspace_id, cursor: nil, limit: nil, prefix: nil, query: nil, sort_order: nil, request_options: {})
102
+ #
103
+ # @param workspace_id [String] The workspace whose keys will be listed.
104
+ #
105
+ # @param cursor [String] Pagination cursor from previous response
106
+ #
107
+ # @param limit [Integer] Maximum number of results to return
108
+ #
109
+ # @param prefix [String] Filter expression (query param: prefix)
110
+ #
111
+ # @param query [String] Free-form search query
112
+ #
113
+ # @param sort_order [String] Sort order for results (asc or desc by creation time)
114
+ #
115
+ # @param request_options [Cadenya::RequestOptions, Hash{Symbol=>Object}, nil]
116
+ #
117
+ # @return [Cadenya::Internal::CursorPagination<Cadenya::Models::AIProviderKey>]
118
+ #
119
+ # @see Cadenya::Models::AIProviderKeyListParams
120
+ def list(workspace_id, params = {})
121
+ parsed, options = Cadenya::AIProviderKeyListParams.dump_request(params)
122
+ query = Cadenya::Internal::Util.encode_query_params(parsed)
123
+ @client.request(
124
+ method: :get,
125
+ path: ["v1/workspaces/%1$s/ai_provider_keys", workspace_id],
126
+ query: query.transform_keys(sort_order: "sortOrder"),
127
+ page: Cadenya::Internal::CursorPagination,
128
+ model: Cadenya::AIProviderKey,
129
+ options: options
130
+ )
131
+ end
132
+
133
+ # Deletes an AI provider key from the workspace
134
+ #
135
+ # @overload delete(id, workspace_id:, request_options: {})
136
+ #
137
+ # @param id [String] The key to delete.
138
+ #
139
+ # @param workspace_id [String] The workspace the key belongs to.
140
+ #
141
+ # @param request_options [Cadenya::RequestOptions, Hash{Symbol=>Object}, nil]
142
+ #
143
+ # @return [nil]
144
+ #
145
+ # @see Cadenya::Models::AIProviderKeyDeleteParams
146
+ def delete(id, params)
147
+ parsed, options = Cadenya::AIProviderKeyDeleteParams.dump_request(params)
148
+ workspace_id =
149
+ parsed.delete(:workspace_id) do
150
+ raise ArgumentError.new("missing required path argument #{_1}")
151
+ end
152
+ @client.request(
153
+ method: :delete,
154
+ path: ["v1/workspaces/%1$s/ai_provider_keys/%2$s", workspace_id, id],
155
+ model: NilClass,
156
+ options: options
157
+ )
158
+ end
159
+
160
+ # @api private
161
+ #
162
+ # @param client [Cadenya::Client]
163
+ def initialize(client:)
164
+ @client = client
165
+ end
166
+ end
167
+ end
168
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cadenya
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
data/lib/cadenya.rb CHANGED
@@ -108,6 +108,13 @@ require_relative "cadenya/models/agent_schedule_entry"
108
108
  require_relative "cadenya/models/agent_spec"
109
109
  require_relative "cadenya/models/agent_update_params"
110
110
  require_relative "cadenya/models/agent_variation_entry"
111
+ require_relative "cadenya/models/ai_provider_key"
112
+ require_relative "cadenya/models/ai_provider_key_create_params"
113
+ require_relative "cadenya/models/ai_provider_key_delete_params"
114
+ require_relative "cadenya/models/ai_provider_key_list_params"
115
+ require_relative "cadenya/models/ai_provider_key_retrieve_params"
116
+ require_relative "cadenya/models/ai_provider_key_spec"
117
+ require_relative "cadenya/models/ai_provider_key_update_params"
111
118
  require_relative "cadenya/models/api_key"
112
119
  require_relative "cadenya/models/api_key_create_params"
113
120
  require_relative "cadenya/models/api_key_delete_params"
@@ -309,6 +316,7 @@ require_relative "cadenya/resources/agents/feedback"
309
316
  require_relative "cadenya/resources/agents/schedules"
310
317
  require_relative "cadenya/resources/agents/variations"
311
318
  require_relative "cadenya/resources/agents/webhook_deliveries"
319
+ require_relative "cadenya/resources/ai_provider_keys"
312
320
  require_relative "cadenya/resources/api_keys"
313
321
  require_relative "cadenya/resources/api_keys/access"
314
322
  require_relative "cadenya/resources/bulk_workspace_resources"
@@ -16,6 +16,9 @@ module Cadenya
16
16
  sig { returns(T.nilable(String)) }
17
17
  attr_reader :webhook_key
18
18
 
19
+ sig { returns(Cadenya::Resources::AIProviderKeys) }
20
+ attr_reader :ai_provider_keys
21
+
19
22
  # Manage the authenticated account. Accounts are the top-level organizational unit
20
23
  # and contain one or more workspaces.
21
24
  sig { returns(Cadenya::Resources::Account) }
@@ -0,0 +1,51 @@
1
+ # typed: strong
2
+
3
+ module Cadenya
4
+ module Models
5
+ class AIProviderKey < Cadenya::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Cadenya::AIProviderKey, Cadenya::Internal::AnyHash)
9
+ end
10
+
11
+ # Standard metadata for persistent, named resources (e.g., agents, tools, prompts)
12
+ sig { returns(Cadenya::ResourceMetadata) }
13
+ attr_reader :metadata
14
+
15
+ sig { params(metadata: Cadenya::ResourceMetadata::OrHash).void }
16
+ attr_writer :metadata
17
+
18
+ sig { returns(Cadenya::AIProviderKeySpec) }
19
+ attr_reader :spec
20
+
21
+ sig { params(spec: Cadenya::AIProviderKeySpec::OrHash).void }
22
+ attr_writer :spec
23
+
24
+ # AIProviderKey is a customer-provided (BYOK) credential for an AI provider,
25
+ # scoped to a workspace. The secret value is never returned in responses.
26
+ sig do
27
+ params(
28
+ metadata: Cadenya::ResourceMetadata::OrHash,
29
+ spec: Cadenya::AIProviderKeySpec::OrHash
30
+ ).returns(T.attached_class)
31
+ end
32
+ def self.new(
33
+ # Standard metadata for persistent, named resources (e.g., agents, tools, prompts)
34
+ metadata:,
35
+ spec:
36
+ )
37
+ end
38
+
39
+ sig do
40
+ override.returns(
41
+ {
42
+ metadata: Cadenya::ResourceMetadata,
43
+ spec: Cadenya::AIProviderKeySpec
44
+ }
45
+ )
46
+ end
47
+ def to_hash
48
+ end
49
+ end
50
+ end
51
+ end