late-sdk 0.0.626 → 0.0.627
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.
- checksums.yaml +4 -4
- data/README.md +5 -0
- data/docs/ConnectedApp.md +30 -0
- data/docs/ConnectedAppsApi.md +144 -0
- data/docs/ListConnectedApps200Response.md +18 -0
- data/docs/RevokeConnectedApp200Response.md +24 -0
- data/lib/zernio-sdk/api/connected_apps_api.rb +150 -0
- data/lib/zernio-sdk/models/connected_app.rb +212 -0
- data/lib/zernio-sdk/models/list_connected_apps200_response.rb +149 -0
- data/lib/zernio-sdk/models/revoke_connected_app200_response.rb +176 -0
- data/lib/zernio-sdk/version.rb +1 -1
- data/lib/zernio-sdk.rb +4 -0
- data/openapi.yaml +115 -0
- data/spec/api/connected_apps_api_spec.rb +58 -0
- data/spec/models/connected_app_spec.rb +72 -0
- data/spec/models/list_connected_apps200_response_spec.rb +36 -0
- data/spec/models/revoke_connected_app200_response_spec.rb +54 -0
- data/zernio-sdk-0.0.627.gem +0 -0
- metadata +18 -2
- data/zernio-sdk-0.0.626.gem +0 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
7
|
+
Contact: support@zernio.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
Generator version: 7.19.0
|
|
10
|
+
|
|
11
|
+
=end
|
|
12
|
+
|
|
13
|
+
require 'date'
|
|
14
|
+
require 'time'
|
|
15
|
+
|
|
16
|
+
module Zernio
|
|
17
|
+
class ListConnectedApps200Response < ApiModelBase
|
|
18
|
+
attr_accessor :connected_apps
|
|
19
|
+
|
|
20
|
+
# Attribute mapping from ruby-style variable name to JSON key.
|
|
21
|
+
def self.attribute_map
|
|
22
|
+
{
|
|
23
|
+
:'connected_apps' => :'connectedApps'
|
|
24
|
+
}
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Returns attribute mapping this model knows about
|
|
28
|
+
def self.acceptable_attribute_map
|
|
29
|
+
attribute_map
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Returns all the JSON keys this model knows about
|
|
33
|
+
def self.acceptable_attributes
|
|
34
|
+
acceptable_attribute_map.values
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Attribute type mapping.
|
|
38
|
+
def self.openapi_types
|
|
39
|
+
{
|
|
40
|
+
:'connected_apps' => :'Array<ConnectedApp>'
|
|
41
|
+
}
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# List of attributes with nullable: true
|
|
45
|
+
def self.openapi_nullable
|
|
46
|
+
Set.new([
|
|
47
|
+
])
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Initializes the object
|
|
51
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
|
52
|
+
def initialize(attributes = {})
|
|
53
|
+
if (!attributes.is_a?(Hash))
|
|
54
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::ListConnectedApps200Response` initialize method"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# check to see if the attribute exists and convert string to symbol for hash key
|
|
58
|
+
acceptable_attribute_map = self.class.acceptable_attribute_map
|
|
59
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
|
60
|
+
if (!acceptable_attribute_map.key?(k.to_sym))
|
|
61
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::ListConnectedApps200Response`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
|
|
62
|
+
end
|
|
63
|
+
h[k.to_sym] = v
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if attributes.key?(:'connected_apps')
|
|
67
|
+
if (value = attributes[:'connected_apps']).is_a?(Array)
|
|
68
|
+
self.connected_apps = value
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Show invalid properties with the reasons. Usually used together with valid?
|
|
74
|
+
# @return Array for valid properties with the reasons
|
|
75
|
+
def list_invalid_properties
|
|
76
|
+
warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
|
|
77
|
+
invalid_properties = Array.new
|
|
78
|
+
invalid_properties
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Check to see if the all the properties in the model are valid
|
|
82
|
+
# @return true if the model is valid
|
|
83
|
+
def valid?
|
|
84
|
+
warn '[DEPRECATED] the `valid?` method is obsolete'
|
|
85
|
+
true
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Checks equality by comparing each attribute.
|
|
89
|
+
# @param [Object] Object to be compared
|
|
90
|
+
def ==(o)
|
|
91
|
+
return true if self.equal?(o)
|
|
92
|
+
self.class == o.class &&
|
|
93
|
+
connected_apps == o.connected_apps
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# @see the `==` method
|
|
97
|
+
# @param [Object] Object to be compared
|
|
98
|
+
def eql?(o)
|
|
99
|
+
self == o
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# Calculates hash code according to all attributes.
|
|
103
|
+
# @return [Integer] Hash code
|
|
104
|
+
def hash
|
|
105
|
+
[connected_apps].hash
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Builds the object from hash
|
|
109
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
|
110
|
+
# @return [Object] Returns the model itself
|
|
111
|
+
def self.build_from_hash(attributes)
|
|
112
|
+
return nil unless attributes.is_a?(Hash)
|
|
113
|
+
attributes = attributes.transform_keys(&:to_sym)
|
|
114
|
+
transformed_hash = {}
|
|
115
|
+
openapi_types.each_pair do |key, type|
|
|
116
|
+
if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
|
|
117
|
+
transformed_hash["#{key}"] = nil
|
|
118
|
+
elsif type =~ /\AArray<(.*)>/i
|
|
119
|
+
# check to ensure the input is an array given that the attribute
|
|
120
|
+
# is documented as an array but the input is not
|
|
121
|
+
if attributes[attribute_map[key]].is_a?(Array)
|
|
122
|
+
transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
|
|
123
|
+
end
|
|
124
|
+
elsif !attributes[attribute_map[key]].nil?
|
|
125
|
+
transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
new(transformed_hash)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# Returns the object in the form of hash
|
|
132
|
+
# @return [Hash] Returns the object in the form of hash
|
|
133
|
+
def to_hash
|
|
134
|
+
hash = {}
|
|
135
|
+
self.class.attribute_map.each_pair do |attr, param|
|
|
136
|
+
value = self.send(attr)
|
|
137
|
+
if value.nil?
|
|
138
|
+
is_nullable = self.class.openapi_nullable.include?(attr)
|
|
139
|
+
next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
hash[param] = _to_hash(value)
|
|
143
|
+
end
|
|
144
|
+
hash
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
end
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
7
|
+
Contact: support@zernio.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
Generator version: 7.19.0
|
|
10
|
+
|
|
11
|
+
=end
|
|
12
|
+
|
|
13
|
+
require 'date'
|
|
14
|
+
require 'time'
|
|
15
|
+
|
|
16
|
+
module Zernio
|
|
17
|
+
class RevokeConnectedApp200Response < ApiModelBase
|
|
18
|
+
attr_accessor :revoked
|
|
19
|
+
|
|
20
|
+
attr_accessor :client_id
|
|
21
|
+
|
|
22
|
+
# Access and refresh tokens revoked by this call.
|
|
23
|
+
attr_accessor :revoked_tokens
|
|
24
|
+
|
|
25
|
+
# Pending authorization codes invalidated by this call.
|
|
26
|
+
attr_accessor :invalidated_codes
|
|
27
|
+
|
|
28
|
+
# Attribute mapping from ruby-style variable name to JSON key.
|
|
29
|
+
def self.attribute_map
|
|
30
|
+
{
|
|
31
|
+
:'revoked' => :'revoked',
|
|
32
|
+
:'client_id' => :'clientId',
|
|
33
|
+
:'revoked_tokens' => :'revokedTokens',
|
|
34
|
+
:'invalidated_codes' => :'invalidatedCodes'
|
|
35
|
+
}
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Returns attribute mapping this model knows about
|
|
39
|
+
def self.acceptable_attribute_map
|
|
40
|
+
attribute_map
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Returns all the JSON keys this model knows about
|
|
44
|
+
def self.acceptable_attributes
|
|
45
|
+
acceptable_attribute_map.values
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Attribute type mapping.
|
|
49
|
+
def self.openapi_types
|
|
50
|
+
{
|
|
51
|
+
:'revoked' => :'Boolean',
|
|
52
|
+
:'client_id' => :'String',
|
|
53
|
+
:'revoked_tokens' => :'Integer',
|
|
54
|
+
:'invalidated_codes' => :'Integer'
|
|
55
|
+
}
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# List of attributes with nullable: true
|
|
59
|
+
def self.openapi_nullable
|
|
60
|
+
Set.new([
|
|
61
|
+
])
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Initializes the object
|
|
65
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
|
66
|
+
def initialize(attributes = {})
|
|
67
|
+
if (!attributes.is_a?(Hash))
|
|
68
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `Zernio::RevokeConnectedApp200Response` initialize method"
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# check to see if the attribute exists and convert string to symbol for hash key
|
|
72
|
+
acceptable_attribute_map = self.class.acceptable_attribute_map
|
|
73
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
|
74
|
+
if (!acceptable_attribute_map.key?(k.to_sym))
|
|
75
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `Zernio::RevokeConnectedApp200Response`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
|
|
76
|
+
end
|
|
77
|
+
h[k.to_sym] = v
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if attributes.key?(:'revoked')
|
|
81
|
+
self.revoked = attributes[:'revoked']
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
if attributes.key?(:'client_id')
|
|
85
|
+
self.client_id = attributes[:'client_id']
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
if attributes.key?(:'revoked_tokens')
|
|
89
|
+
self.revoked_tokens = attributes[:'revoked_tokens']
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
if attributes.key?(:'invalidated_codes')
|
|
93
|
+
self.invalidated_codes = attributes[:'invalidated_codes']
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Show invalid properties with the reasons. Usually used together with valid?
|
|
98
|
+
# @return Array for valid properties with the reasons
|
|
99
|
+
def list_invalid_properties
|
|
100
|
+
warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
|
|
101
|
+
invalid_properties = Array.new
|
|
102
|
+
invalid_properties
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Check to see if the all the properties in the model are valid
|
|
106
|
+
# @return true if the model is valid
|
|
107
|
+
def valid?
|
|
108
|
+
warn '[DEPRECATED] the `valid?` method is obsolete'
|
|
109
|
+
true
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Checks equality by comparing each attribute.
|
|
113
|
+
# @param [Object] Object to be compared
|
|
114
|
+
def ==(o)
|
|
115
|
+
return true if self.equal?(o)
|
|
116
|
+
self.class == o.class &&
|
|
117
|
+
revoked == o.revoked &&
|
|
118
|
+
client_id == o.client_id &&
|
|
119
|
+
revoked_tokens == o.revoked_tokens &&
|
|
120
|
+
invalidated_codes == o.invalidated_codes
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# @see the `==` method
|
|
124
|
+
# @param [Object] Object to be compared
|
|
125
|
+
def eql?(o)
|
|
126
|
+
self == o
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# Calculates hash code according to all attributes.
|
|
130
|
+
# @return [Integer] Hash code
|
|
131
|
+
def hash
|
|
132
|
+
[revoked, client_id, revoked_tokens, invalidated_codes].hash
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# Builds the object from hash
|
|
136
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
|
137
|
+
# @return [Object] Returns the model itself
|
|
138
|
+
def self.build_from_hash(attributes)
|
|
139
|
+
return nil unless attributes.is_a?(Hash)
|
|
140
|
+
attributes = attributes.transform_keys(&:to_sym)
|
|
141
|
+
transformed_hash = {}
|
|
142
|
+
openapi_types.each_pair do |key, type|
|
|
143
|
+
if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
|
|
144
|
+
transformed_hash["#{key}"] = nil
|
|
145
|
+
elsif type =~ /\AArray<(.*)>/i
|
|
146
|
+
# check to ensure the input is an array given that the attribute
|
|
147
|
+
# is documented as an array but the input is not
|
|
148
|
+
if attributes[attribute_map[key]].is_a?(Array)
|
|
149
|
+
transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
|
|
150
|
+
end
|
|
151
|
+
elsif !attributes[attribute_map[key]].nil?
|
|
152
|
+
transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
new(transformed_hash)
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
# Returns the object in the form of hash
|
|
159
|
+
# @return [Hash] Returns the object in the form of hash
|
|
160
|
+
def to_hash
|
|
161
|
+
hash = {}
|
|
162
|
+
self.class.attribute_map.each_pair do |attr, param|
|
|
163
|
+
value = self.send(attr)
|
|
164
|
+
if value.nil?
|
|
165
|
+
is_nullable = self.class.openapi_nullable.include?(attr)
|
|
166
|
+
next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
hash[param] = _to_hash(value)
|
|
170
|
+
end
|
|
171
|
+
hash
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
end
|
data/lib/zernio-sdk/version.rb
CHANGED
data/lib/zernio-sdk.rb
CHANGED
|
@@ -149,6 +149,7 @@ require 'zernio-sdk/models/connect_whats_app_credentials200_response_account'
|
|
|
149
149
|
require 'zernio-sdk/models/connect_whats_app_credentials_request'
|
|
150
150
|
require 'zernio-sdk/models/connected'
|
|
151
151
|
require 'zernio-sdk/models/connected_account'
|
|
152
|
+
require 'zernio-sdk/models/connected_app'
|
|
152
153
|
require 'zernio-sdk/models/conversion_destination'
|
|
153
154
|
require 'zernio-sdk/models/conversion_event'
|
|
154
155
|
require 'zernio-sdk/models/conversion_event_items_inner'
|
|
@@ -832,6 +833,7 @@ require 'zernio-sdk/models/list_comment_automation_logs200_response'
|
|
|
832
833
|
require 'zernio-sdk/models/list_comment_automations200_response'
|
|
833
834
|
require 'zernio-sdk/models/list_comment_automations200_response_automations_inner'
|
|
834
835
|
require 'zernio-sdk/models/list_comment_automations200_response_automations_inner_stats'
|
|
836
|
+
require 'zernio-sdk/models/list_connected_apps200_response'
|
|
835
837
|
require 'zernio-sdk/models/list_contacts200_response'
|
|
836
838
|
require 'zernio-sdk/models/list_contacts200_response_contacts_inner'
|
|
837
839
|
require 'zernio-sdk/models/list_contacts200_response_filters'
|
|
@@ -1083,6 +1085,7 @@ require 'zernio-sdk/models/review_phone_number_kyc_packet_request'
|
|
|
1083
1085
|
require 'zernio-sdk/models/review_webhook_review'
|
|
1084
1086
|
require 'zernio-sdk/models/review_webhook_review_reply'
|
|
1085
1087
|
require 'zernio-sdk/models/review_webhook_review_reviewer'
|
|
1088
|
+
require 'zernio-sdk/models/revoke_connected_app200_response'
|
|
1086
1089
|
require 'zernio-sdk/models/rf_prediction'
|
|
1087
1090
|
require 'zernio-sdk/models/saved_targeting_audience'
|
|
1088
1091
|
require 'zernio-sdk/models/schedule_broadcast200_response'
|
|
@@ -1582,6 +1585,7 @@ require 'zernio-sdk/api/calls_api'
|
|
|
1582
1585
|
require 'zernio-sdk/api/comment_automations_api'
|
|
1583
1586
|
require 'zernio-sdk/api/comments_api'
|
|
1584
1587
|
require 'zernio-sdk/api/connect_api'
|
|
1588
|
+
require 'zernio-sdk/api/connected_apps_api'
|
|
1585
1589
|
require 'zernio-sdk/api/contacts_api'
|
|
1586
1590
|
require 'zernio-sdk/api/conversions_api'
|
|
1587
1591
|
require 'zernio-sdk/api/custom_fields_api'
|
data/openapi.yaml
CHANGED
|
@@ -226,6 +226,10 @@ tags:
|
|
|
226
226
|
- name: API Keys
|
|
227
227
|
description: |
|
|
228
228
|
Create, list, and revoke API keys used to authenticate requests.
|
|
229
|
+
- name: Connected Apps
|
|
230
|
+
description: |
|
|
231
|
+
List and revoke the OAuth clients (AI assistants and MCP connectors) authorized
|
|
232
|
+
on the account.
|
|
229
233
|
- name: Invites
|
|
230
234
|
description: |
|
|
231
235
|
Generate invite tokens for adding members to a team.
|
|
@@ -5705,6 +5709,31 @@ components:
|
|
|
5705
5709
|
enum: [read-write, read]
|
|
5706
5710
|
description: "'read-write' allows all operations, 'read' restricts to GET requests only"
|
|
5707
5711
|
default: read-write
|
|
5712
|
+
ConnectedApp:
|
|
5713
|
+
type: object
|
|
5714
|
+
description: |
|
|
5715
|
+
An OAuth client (AI assistant / MCP connector) authorized by the user and still
|
|
5716
|
+
holding at least one live token.
|
|
5717
|
+
properties:
|
|
5718
|
+
clientId: { type: string }
|
|
5719
|
+
clientName:
|
|
5720
|
+
type: string
|
|
5721
|
+
description: 'Name the client declared at registration. Registration is open, so this is self-declared and not verified.'
|
|
5722
|
+
redirectHost:
|
|
5723
|
+
type: [string, "null"]
|
|
5724
|
+
description: 'Host of the client''s registered redirect URI (non-http schemes are shown as scheme//host). The destination an impostor cannot fake.'
|
|
5725
|
+
scopes:
|
|
5726
|
+
type: array
|
|
5727
|
+
items: { type: string }
|
|
5728
|
+
description: Scopes granted on the most recent token.
|
|
5729
|
+
authorizedAt: { type: [string, "null"], format: date-time }
|
|
5730
|
+
lastUsedAt:
|
|
5731
|
+
type: [string, "null"]
|
|
5732
|
+
format: date-time
|
|
5733
|
+
description: Last time any of the client's live tokens authenticated a request.
|
|
5734
|
+
tokenCount:
|
|
5735
|
+
type: integer
|
|
5736
|
+
description: 'Live tokens held by the client (an active session is typically one access plus one refresh token).'
|
|
5708
5737
|
BillingSnapshot:
|
|
5709
5738
|
type: object
|
|
5710
5739
|
description: |
|
|
@@ -14752,6 +14781,92 @@ paths:
|
|
|
14752
14781
|
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
14753
14782
|
'404': { $ref: '#/components/responses/NotFound' }
|
|
14754
14783
|
|
|
14784
|
+
/v1/me/connected-apps:
|
|
14785
|
+
get:
|
|
14786
|
+
operationId: listConnectedApps
|
|
14787
|
+
tags: [Connected Apps]
|
|
14788
|
+
summary: List connected apps
|
|
14789
|
+
description: |
|
|
14790
|
+
Returns the OAuth clients (AI assistants and MCP connectors) the authenticated
|
|
14791
|
+
user has authorized and that still hold a live token.
|
|
14792
|
+
|
|
14793
|
+
Requires a session or a full-scope API key. A profile-scoped API key or an
|
|
14794
|
+
OAuth access token is rejected with 403: an app must not be able to enumerate
|
|
14795
|
+
its sibling authorizations.
|
|
14796
|
+
responses:
|
|
14797
|
+
'200':
|
|
14798
|
+
description: Connected apps
|
|
14799
|
+
content:
|
|
14800
|
+
application/json:
|
|
14801
|
+
schema:
|
|
14802
|
+
type: object
|
|
14803
|
+
properties:
|
|
14804
|
+
connectedApps:
|
|
14805
|
+
type: array
|
|
14806
|
+
items: { $ref: '#/components/schemas/ConnectedApp' }
|
|
14807
|
+
example:
|
|
14808
|
+
connectedApps:
|
|
14809
|
+
- clientId: "late_cid_3f9c1a7b2d4e6f80a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718"
|
|
14810
|
+
clientName: "Claude"
|
|
14811
|
+
redirectHost: "claude.ai"
|
|
14812
|
+
scopes: ["posts:read", "posts:write", "accounts:read"]
|
|
14813
|
+
authorizedAt: "2026-07-02T09:14:00Z"
|
|
14814
|
+
lastUsedAt: "2026-07-30T18:02:11Z"
|
|
14815
|
+
tokenCount: 2
|
|
14816
|
+
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
14817
|
+
'403':
|
|
14818
|
+
description: 'The calling credential may not manage OAuth authorizations (profile-scoped API key or OAuth access token). Error code: insufficient_permissions.'
|
|
14819
|
+
content:
|
|
14820
|
+
application/json:
|
|
14821
|
+
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
|
14822
|
+
/v1/me/connected-apps/{clientId}:
|
|
14823
|
+
delete:
|
|
14824
|
+
operationId: revokeConnectedApp
|
|
14825
|
+
tags: [Connected Apps]
|
|
14826
|
+
summary: Revoke connected app
|
|
14827
|
+
description: |
|
|
14828
|
+
Ends an app's access: invalidates the client's pending authorization codes and
|
|
14829
|
+
revokes every live token it holds for the authenticated user. Takes effect on
|
|
14830
|
+
the app's next request.
|
|
14831
|
+
|
|
14832
|
+
Idempotent while the authorization is still on record: revoking an app that
|
|
14833
|
+
was already revoked returns 200 with `revokedTokens: 0`.
|
|
14834
|
+
parameters:
|
|
14835
|
+
- name: clientId
|
|
14836
|
+
in: path
|
|
14837
|
+
required: true
|
|
14838
|
+
description: 'OAuth client id, as returned by GET /v1/me/connected-apps.'
|
|
14839
|
+
schema: { type: string, minLength: 1, maxLength: 200 }
|
|
14840
|
+
responses:
|
|
14841
|
+
'200':
|
|
14842
|
+
description: Revoked
|
|
14843
|
+
content:
|
|
14844
|
+
application/json:
|
|
14845
|
+
schema:
|
|
14846
|
+
type: object
|
|
14847
|
+
properties:
|
|
14848
|
+
revoked: { type: boolean }
|
|
14849
|
+
clientId: { type: string }
|
|
14850
|
+
revokedTokens: { type: integer, description: 'Access and refresh tokens revoked by this call.' }
|
|
14851
|
+
invalidatedCodes: { type: integer, description: 'Pending authorization codes invalidated by this call.' }
|
|
14852
|
+
example:
|
|
14853
|
+
revoked: true
|
|
14854
|
+
clientId: "late_cid_3f9c1a7b2d4e6f80a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718"
|
|
14855
|
+
revokedTokens: 2
|
|
14856
|
+
invalidatedCodes: 0
|
|
14857
|
+
'400': { $ref: '#/components/responses/BadRequest' }
|
|
14858
|
+
'401': { $ref: '#/components/responses/Unauthorized' }
|
|
14859
|
+
'403':
|
|
14860
|
+
description: 'The calling credential may not manage OAuth authorizations (profile-scoped API key or OAuth access token). Error code: insufficient_permissions.'
|
|
14861
|
+
content:
|
|
14862
|
+
application/json:
|
|
14863
|
+
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
|
14864
|
+
'404':
|
|
14865
|
+
description: 'The authenticated user has never authorized this client. Error code: oauth_client_not_found.'
|
|
14866
|
+
content:
|
|
14867
|
+
application/json:
|
|
14868
|
+
schema: { $ref: '#/components/schemas/ErrorResponse' }
|
|
14869
|
+
|
|
14755
14870
|
/v1/invite/tokens:
|
|
14756
14871
|
post:
|
|
14757
14872
|
operationId: createInviteToken
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
7
|
+
Contact: support@zernio.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
Generator version: 7.19.0
|
|
10
|
+
|
|
11
|
+
=end
|
|
12
|
+
|
|
13
|
+
require 'spec_helper'
|
|
14
|
+
require 'json'
|
|
15
|
+
|
|
16
|
+
# Unit tests for Zernio::ConnectedAppsApi
|
|
17
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
18
|
+
# Please update as you see appropriate
|
|
19
|
+
describe 'ConnectedAppsApi' do
|
|
20
|
+
before do
|
|
21
|
+
# run before each test
|
|
22
|
+
@api_instance = Zernio::ConnectedAppsApi.new
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
after do
|
|
26
|
+
# run after each test
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe 'test an instance of ConnectedAppsApi' do
|
|
30
|
+
it 'should create an instance of ConnectedAppsApi' do
|
|
31
|
+
expect(@api_instance).to be_instance_of(Zernio::ConnectedAppsApi)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# unit tests for list_connected_apps
|
|
36
|
+
# List connected apps
|
|
37
|
+
# Returns the OAuth clients (AI assistants and MCP connectors) the authenticated user has authorized and that still hold a live token. Requires a session or a full-scope API key. A profile-scoped API key or an OAuth access token is rejected with 403: an app must not be able to enumerate its sibling authorizations.
|
|
38
|
+
# @param [Hash] opts the optional parameters
|
|
39
|
+
# @return [ListConnectedApps200Response]
|
|
40
|
+
describe 'list_connected_apps test' do
|
|
41
|
+
it 'should work' do
|
|
42
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# unit tests for revoke_connected_app
|
|
47
|
+
# Revoke connected app
|
|
48
|
+
# Ends an app's access: invalidates the client's pending authorization codes and revokes every live token it holds for the authenticated user. Takes effect on the app's next request. Idempotent while the authorization is still on record: revoking an app that was already revoked returns 200 with `revokedTokens: 0`.
|
|
49
|
+
# @param client_id OAuth client id, as returned by GET /v1/me/connected-apps.
|
|
50
|
+
# @param [Hash] opts the optional parameters
|
|
51
|
+
# @return [RevokeConnectedApp200Response]
|
|
52
|
+
describe 'revoke_connected_app test' do
|
|
53
|
+
it 'should work' do
|
|
54
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
7
|
+
Contact: support@zernio.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
Generator version: 7.19.0
|
|
10
|
+
|
|
11
|
+
=end
|
|
12
|
+
|
|
13
|
+
require 'spec_helper'
|
|
14
|
+
require 'json'
|
|
15
|
+
require 'date'
|
|
16
|
+
|
|
17
|
+
# Unit tests for Zernio::ConnectedApp
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::ConnectedApp do
|
|
21
|
+
#let(:instance) { Zernio::ConnectedApp.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of ConnectedApp' do
|
|
24
|
+
it 'should create an instance of ConnectedApp' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::ConnectedApp)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "client_id"' do
|
|
31
|
+
it 'should work' do
|
|
32
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe 'test attribute "client_name"' do
|
|
37
|
+
it 'should work' do
|
|
38
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe 'test attribute "redirect_host"' do
|
|
43
|
+
it 'should work' do
|
|
44
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe 'test attribute "scopes"' do
|
|
49
|
+
it 'should work' do
|
|
50
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe 'test attribute "authorized_at"' do
|
|
55
|
+
it 'should work' do
|
|
56
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe 'test attribute "last_used_at"' do
|
|
61
|
+
it 'should work' do
|
|
62
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
describe 'test attribute "token_count"' do
|
|
67
|
+
it 'should work' do
|
|
68
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Zernio API
|
|
3
|
+
|
|
4
|
+
#API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.4
|
|
7
|
+
Contact: support@zernio.com
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
Generator version: 7.19.0
|
|
10
|
+
|
|
11
|
+
=end
|
|
12
|
+
|
|
13
|
+
require 'spec_helper'
|
|
14
|
+
require 'json'
|
|
15
|
+
require 'date'
|
|
16
|
+
|
|
17
|
+
# Unit tests for Zernio::ListConnectedApps200Response
|
|
18
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
19
|
+
# Please update as you see appropriate
|
|
20
|
+
describe Zernio::ListConnectedApps200Response do
|
|
21
|
+
#let(:instance) { Zernio::ListConnectedApps200Response.new }
|
|
22
|
+
|
|
23
|
+
describe 'test an instance of ListConnectedApps200Response' do
|
|
24
|
+
it 'should create an instance of ListConnectedApps200Response' do
|
|
25
|
+
# uncomment below to test the instance creation
|
|
26
|
+
#expect(instance).to be_instance_of(Zernio::ListConnectedApps200Response)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "connected_apps"' do
|
|
31
|
+
it 'should work' do
|
|
32
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|