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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +66 -0
- data/LICENSE +21 -0
- data/README.md +209 -0
- data/SECURITY.md +15 -0
- data/docs/api-support.md +71 -0
- data/docs/cached-validation.md +58 -0
- data/docs/implementation-guides.md +12 -0
- data/docs/implementation-status.md +45 -0
- data/docs/live-validation-report.json +177 -0
- data/docs/live-validation.md +109 -0
- data/docs/mcp-plan.md +19 -0
- data/docs/release-preparation/0.1.0-manual-artifacts.json +112 -0
- data/docs/release-preparation/limited-first-release-decision.md +28 -0
- data/docs/release-preparation/manual-first-publication.md +192 -0
- data/docs/releasing.md +154 -0
- data/examples/read_only.rb +12 -0
- data/lib/five_pm/client.rb +145 -0
- data/lib/five_pm/download.rb +16 -0
- data/lib/five_pm/errors.rb +73 -0
- data/lib/five_pm/operations.json +354 -0
- data/lib/five_pm/pagination.rb +51 -0
- data/lib/five_pm/request.rb +80 -0
- data/lib/five_pm/resource.rb +41 -0
- data/lib/five_pm/response.rb +212 -0
- data/lib/five_pm/retry_policy.rb +48 -0
- data/lib/five_pm/services.rb +40 -0
- data/lib/five_pm/transport.rb +147 -0
- data/lib/five_pm/types.json +498 -0
- data/lib/five_pm/version.rb +3 -0
- data/lib/five_pm.rb +9 -0
- data/sig/five_pm.rbs +152 -0
- data/sig/models.rbs +223 -0
- metadata +113 -0
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: []
|