5pm 0.1.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.
data/sig/models.rbs ADDED
@@ -0,0 +1,223 @@
1
+ # Model readers follow types.json; every field is optional, matching missing/null JSON.
2
+ module FivePM
3
+ module Models
4
+ TYPES: Hash[String, FivePM::fields]
5
+ class Record
6
+ def initialize: (FivePM::json_object, ?fields: FivePM::fields, ?reader_payload: FivePM::json_object?) -> void
7
+ def []: (String | Symbol) -> FivePM::reader_value
8
+ def key?: (String | Symbol) -> bool
9
+ def to_h: () -> FivePM::json_object
10
+ def raw: () -> FivePM::json_object
11
+ def to_json: (*untyped) -> String
12
+ def inspect: () -> String
13
+ end
14
+
15
+ class AuthToken < Record
16
+ FIELDS: FivePM::fields
17
+ def session_id: () -> (String)?
18
+ end
19
+
20
+ class User < Record
21
+ FIELDS: FivePM::fields
22
+ def id: () -> (Integer)?
23
+ def password: () -> (String)?
24
+ def email: () -> (String)?
25
+ def first_name: () -> (String)?
26
+ def last_name: () -> (String)?
27
+ def title: () -> (String)?
28
+ def address: () -> (String)?
29
+ def work_phone: () -> (String)?
30
+ def home_phone: () -> (String)?
31
+ def cell_phone: () -> (String)?
32
+ def timezone: () -> (Integer)?
33
+ def company: () -> (String)?
34
+ def comment: () -> (String)?
35
+ def security_level: () -> (String)?
36
+ def can_view_profiles: () -> (String | bool)?
37
+ def avatar: () -> (String)?
38
+ end
39
+
40
+ class UserList < Record
41
+ FIELDS: FivePM::fields
42
+ include Enumerable[Models::User]
43
+ def each: () -> Enumerator[Models::User, Array[Models::User]]
44
+ | () { (Models::User) -> void } -> Array[Models::User]
45
+ def items: () -> (Array[Models::User])?
46
+ def count: () -> (Integer)?
47
+ def total: () -> (Integer)?
48
+ end
49
+
50
+ class ProjectsGroup < Record
51
+ FIELDS: FivePM::fields
52
+ def id: () -> (Integer)?
53
+ def name: () -> (String)?
54
+ def info: () -> (String)?
55
+ end
56
+
57
+ class ProjectsGroupList < Record
58
+ FIELDS: FivePM::fields
59
+ include Enumerable[Models::ProjectsGroup]
60
+ def each: () -> Enumerator[Models::ProjectsGroup, Array[Models::ProjectsGroup]]
61
+ | () { (Models::ProjectsGroup) -> void } -> Array[Models::ProjectsGroup]
62
+ def items: () -> (Array[Models::ProjectsGroup])?
63
+ def count: () -> (Integer)?
64
+ def total: () -> (Integer)?
65
+ end
66
+
67
+ class Project < Record
68
+ FIELDS: FivePM::fields
69
+ def id: () -> (Integer)?
70
+ def name: () -> (String)?
71
+ def description: () -> (String)?
72
+ def tags: () -> (String)?
73
+ def client_id: () -> (Integer)?
74
+ def owner_id: () -> (Integer)?
75
+ def group_id: () -> (Integer)?
76
+ def start_date: () -> (String)?
77
+ def end_date: () -> (String)?
78
+ def priority: () -> (Integer)?
79
+ def status: () -> (Integer)?
80
+ def created_at: () -> (String)?
81
+ def updated_at: () -> (String)?
82
+ def notify_project_team: () -> (bool)?
83
+ def notify_client: () -> (bool)?
84
+ def notify_users: () -> (Models::UserList)?
85
+ def hidden: () -> (bool)?
86
+ def flag: () -> (Integer)?
87
+ def team: () -> (Models::UserList)?
88
+ def can_edit: () -> (bool)?
89
+ end
90
+
91
+ class ProjectList < Record
92
+ FIELDS: FivePM::fields
93
+ include Enumerable[Models::Project]
94
+ def each: () -> Enumerator[Models::Project, Array[Models::Project]]
95
+ | () { (Models::Project) -> void } -> Array[Models::Project]
96
+ def items: () -> (Array[Models::Project])?
97
+ def count: () -> (Integer)?
98
+ def total: () -> (Integer)?
99
+ end
100
+
101
+ class Task < Record
102
+ FIELDS: FivePM::fields
103
+ def id: () -> (Integer)?
104
+ def parent_id: () -> (Integer)?
105
+ def parent_name: () -> (String)?
106
+ def name: () -> (String)?
107
+ def description: () -> (String)?
108
+ def tags: () -> (String)?
109
+ def project_id: () -> (Integer)?
110
+ def owner_id: () -> (Integer)?
111
+ def group_id: () -> (Integer)?
112
+ def start_date: () -> (String)?
113
+ def end_date: () -> (String)?
114
+ def priority: () -> (Integer)?
115
+ def progress: () -> (Float)?
116
+ def status: () -> (Integer)?
117
+ def created_at: () -> (String)?
118
+ def updated_at: () -> (String)?
119
+ def notify_project_team: () -> (bool)?
120
+ def notify_task_team: () -> (bool)?
121
+ def notify_client: () -> (bool)?
122
+ def notify_users: () -> (Models::UserList)?
123
+ def hidden: () -> (bool)?
124
+ def flag: () -> (Integer)?
125
+ def hours_done: () -> (Float)?
126
+ def estimated_time: () -> (Float)?
127
+ def team: () -> (Models::UserList)?
128
+ def can_edit: () -> (bool)?
129
+ end
130
+
131
+ class TaskList < Record
132
+ FIELDS: FivePM::fields
133
+ include Enumerable[Models::Task]
134
+ def each: () -> Enumerator[Models::Task, Array[Models::Task]]
135
+ | () { (Models::Task) -> void } -> Array[Models::Task]
136
+ def items: () -> (Array[Models::Task])?
137
+ def count: () -> (Integer)?
138
+ def total: () -> (Integer)?
139
+ end
140
+
141
+ class Activity < Record
142
+ FIELDS: FivePM::fields
143
+ def id: () -> (Integer)?
144
+ def task_id: () -> (Integer)?
145
+ def task_name: () -> (String)?
146
+ def project_id: () -> (Integer)?
147
+ def project_name: () -> (String)?
148
+ def type: () -> (String)?
149
+ def text: () -> (String)?
150
+ def owner_id: () -> (Integer)?
151
+ def progress: () -> (Integer)?
152
+ def hours_done: () -> (Float)?
153
+ def created_at: () -> (String)?
154
+ def notify_project_team: () -> (bool)?
155
+ def notify_task_team: () -> (bool)?
156
+ def notify_client: () -> (bool)?
157
+ def notify_users: () -> (Models::UserList)?
158
+ def hide_from_clients: () -> (bool)?
159
+ def date: () -> (String)?
160
+ def files: () -> (Models::FileList)?
161
+ end
162
+
163
+ class ActivityList < Record
164
+ FIELDS: FivePM::fields
165
+ include Enumerable[Models::Activity]
166
+ def each: () -> Enumerator[Models::Activity, Array[Models::Activity]]
167
+ | () { (Models::Activity) -> void } -> Array[Models::Activity]
168
+ def items: () -> (Array[Models::Activity])?
169
+ def count: () -> (Integer)?
170
+ def total: () -> (Integer)?
171
+ end
172
+
173
+ class ImageInfo < Record
174
+ FIELDS: FivePM::fields
175
+ def width: () -> (Integer)?
176
+ def height: () -> (Integer)?
177
+ end
178
+
179
+ class File < Record
180
+ FIELDS: FivePM::fields
181
+ def id: () -> (Integer)?
182
+ def activity_id: () -> (Integer)?
183
+ def activity_type: () -> (String)?
184
+ def name: () -> (String)?
185
+ def url: () -> (String)?
186
+ def type: () -> (String)?
187
+ def size: () -> (Integer)?
188
+ def content: () -> (String)?
189
+ def created_at: () -> (String)?
190
+ def can_edit: () -> (bool)?
191
+ def can_thumb: () -> (bool)?
192
+ def url_thumb: () -> (String)?
193
+ def image_info: () -> (Models::ImageInfo)?
194
+ end
195
+
196
+ class FileList < Record
197
+ FIELDS: FivePM::fields
198
+ include Enumerable[Models::File]
199
+ def each: () -> Enumerator[Models::File, Array[Models::File]]
200
+ | () { (Models::File) -> void } -> Array[Models::File]
201
+ def items: () -> (Array[Models::File])?
202
+ def count: () -> (Integer)?
203
+ def total: () -> (Integer)?
204
+ end
205
+ end
206
+
207
+ class Response < Models::Record
208
+ def initialize: (json_object, contract: contract) -> void
209
+ def activity: () -> (Models::Activity)?
210
+ def auth: () -> (Models::AuthToken)?
211
+ def file: () -> (Models::File)?
212
+ def group: () -> (Models::ProjectsGroup)?
213
+ def is_ssl: () -> (bool)?
214
+ def list: () -> (Models::ActivityList | Models::FileList | Models::ProjectList | Models::ProjectsGroupList | Models::TaskList | Models::UserList)?
215
+ def nop_state: () -> (bool)?
216
+ def project: () -> (Models::Project)?
217
+ def session_id: () -> (String)?
218
+ def sign_out_state: () -> (bool)?
219
+ def status: () -> (Integer | bool)?
220
+ def task: () -> (Models::Task)?
221
+ def user: () -> (Models::User)?
222
+ end
223
+ end
metadata ADDED
@@ -0,0 +1,113 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: 5pm
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Stan Carver II
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 2026-10-31 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: json
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '2.6'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '4'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '2.6'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '4'
32
+ - !ruby/object:Gem::Dependency
33
+ name: net-http
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0.3'
39
+ - - "<"
40
+ - !ruby/object:Gem::Version
41
+ version: '1'
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0.3'
49
+ - - "<"
50
+ - !ruby/object:Gem::Version
51
+ version: '1'
52
+ executables: []
53
+ extensions: []
54
+ extra_rdoc_files: []
55
+ files:
56
+ - CHANGELOG.md
57
+ - LICENSE
58
+ - README.md
59
+ - SECURITY.md
60
+ - docs/api-support.md
61
+ - docs/cached-validation.md
62
+ - docs/implementation-guides.md
63
+ - docs/implementation-status.md
64
+ - docs/live-validation-report.json
65
+ - docs/live-validation.md
66
+ - docs/mcp-plan.md
67
+ - docs/release-preparation/0.1.0-manual-artifacts.json
68
+ - docs/release-preparation/limited-first-release-decision.md
69
+ - docs/release-preparation/manual-first-publication.md
70
+ - docs/releasing.md
71
+ - examples/read_only.rb
72
+ - lib/five_pm.rb
73
+ - lib/five_pm/client.rb
74
+ - lib/five_pm/download.rb
75
+ - lib/five_pm/errors.rb
76
+ - lib/five_pm/operations.json
77
+ - lib/five_pm/pagination.rb
78
+ - lib/five_pm/request.rb
79
+ - lib/five_pm/resource.rb
80
+ - lib/five_pm/response.rb
81
+ - lib/five_pm/retry_policy.rb
82
+ - lib/five_pm/services.rb
83
+ - lib/five_pm/transport.rb
84
+ - lib/five_pm/types.json
85
+ - lib/five_pm/version.rb
86
+ - sig/five_pm.rbs
87
+ - sig/models.rbs
88
+ homepage: https://github.com/scarver2/5pm-ruby
89
+ licenses:
90
+ - MIT
91
+ metadata:
92
+ source_code_uri: https://github.com/scarver2/5pm-ruby
93
+ changelog_uri: https://github.com/scarver2/5pm-ruby/blob/master/CHANGELOG.md
94
+ allowed_push_host: https://rubygems.org
95
+ rubygems_mfa_required: 'true'
96
+ rdoc_options: []
97
+ require_paths:
98
+ - lib
99
+ required_ruby_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '3.2'
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ requirements: []
110
+ rubygems_version: 4.0.20
111
+ specification_version: 4
112
+ summary: Ruby SDK for the 5pm API v2
113
+ test_files: []