licensekit-ruby 0.1.0.alpha.1 → 1.0.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/openapi/openapi.yaml CHANGED
@@ -28,6 +28,8 @@ tags:
28
28
  description: Management operations for scoped API keys.
29
29
  - name: events
30
30
  description: Management operations for audit and event feeds.
31
+ - name: ops
32
+ description: Management operations for operational summaries and error reporting.
31
33
  - name: webhooks
32
34
  description: Management operations for webhook endpoints and delivery state.
33
35
  - name: licenses
@@ -215,7 +217,79 @@ components:
215
217
  - license:write
216
218
  - device:write
217
219
  - event:read
220
+ - ops:read
221
+ - report:read
222
+ - report:export
218
223
  - webhook:write
224
+ ReportKind:
225
+ type: string
226
+ enum:
227
+ - usage-summary
228
+ - usage-ledger
229
+ - license-audit
230
+ - customer-summary
231
+ - subscription-settlement
232
+ ReportExportFormat:
233
+ type: string
234
+ enum:
235
+ - json
236
+ - csv
237
+ - pdf
238
+ ReportExportCreateRequest:
239
+ type: object
240
+ required:
241
+ - report_kind
242
+ properties:
243
+ report_kind:
244
+ $ref: "#/components/schemas/ReportKind"
245
+ format:
246
+ $ref: "#/components/schemas/ReportExportFormat"
247
+ filters:
248
+ type: object
249
+ additionalProperties: true
250
+ ReportExportMetadata:
251
+ type: object
252
+ required:
253
+ - id
254
+ - report_kind
255
+ - format
256
+ - status
257
+ - filters
258
+ - digest
259
+ - artifact_digest
260
+ - content_type
261
+ - created_by
262
+ - created_at
263
+ - updated_at
264
+ - download_url
265
+ properties:
266
+ id:
267
+ type: string
268
+ report_kind:
269
+ $ref: "#/components/schemas/ReportKind"
270
+ format:
271
+ $ref: "#/components/schemas/ReportExportFormat"
272
+ status:
273
+ type: string
274
+ filters:
275
+ type: object
276
+ additionalProperties: true
277
+ digest:
278
+ type: string
279
+ artifact_digest:
280
+ type: string
281
+ content_type:
282
+ type: string
283
+ created_by:
284
+ type: string
285
+ created_at:
286
+ type: string
287
+ format: date-time
288
+ updated_at:
289
+ type: string
290
+ format: date-time
291
+ download_url:
292
+ type: string
219
293
  LicenseType:
220
294
  type: string
221
295
  enum:
@@ -3434,6 +3508,645 @@ paths:
3434
3508
  $ref: "#/components/responses/UnauthorizedManagement"
3435
3509
  "403":
3436
3510
  $ref: "#/components/responses/ForbiddenScope"
3511
+ /api/v1/activities:
3512
+ get:
3513
+ operationId: listActivities
3514
+ tags: [reporting]
3515
+ summary: List normalized reporting activities
3516
+ x-required-scopes: ["report:read"]
3517
+ security:
3518
+ - bearerAuth: []
3519
+ parameters:
3520
+ - $ref: "#/components/parameters/CursorParam"
3521
+ - $ref: "#/components/parameters/LimitParam"
3522
+ - in: query
3523
+ name: from
3524
+ schema:
3525
+ type: string
3526
+ format: date-time
3527
+ - in: query
3528
+ name: to
3529
+ schema:
3530
+ type: string
3531
+ format: date-time
3532
+ - in: query
3533
+ name: action
3534
+ schema:
3535
+ type: string
3536
+ - in: query
3537
+ name: source
3538
+ schema:
3539
+ type: string
3540
+ - in: query
3541
+ name: product_id
3542
+ schema:
3543
+ type: string
3544
+ - in: query
3545
+ name: customer_id
3546
+ schema:
3547
+ type: string
3548
+ - in: query
3549
+ name: license_id
3550
+ schema:
3551
+ type: string
3552
+ - in: query
3553
+ name: order_id
3554
+ schema:
3555
+ type: string
3556
+ - in: query
3557
+ name: subscription_id
3558
+ schema:
3559
+ type: string
3560
+ - in: query
3561
+ name: feature_code
3562
+ schema:
3563
+ type: string
3564
+ - in: query
3565
+ name: request_id
3566
+ schema:
3567
+ type: string
3568
+ - in: query
3569
+ name: result_class
3570
+ schema:
3571
+ type: string
3572
+ - in: query
3573
+ name: status_code
3574
+ schema:
3575
+ type: integer
3576
+ responses:
3577
+ "200":
3578
+ description: Reporting activity feed page.
3579
+ content:
3580
+ application/json:
3581
+ schema:
3582
+ type: object
3583
+ required: [data, page_info, meta]
3584
+ properties:
3585
+ data:
3586
+ type: array
3587
+ items:
3588
+ type: object
3589
+ page_info:
3590
+ $ref: "#/components/schemas/EventPageInfo"
3591
+ meta:
3592
+ $ref: "#/components/schemas/ResponseMeta"
3593
+ "400":
3594
+ $ref: "#/components/responses/InvalidQuery"
3595
+ "401":
3596
+ $ref: "#/components/responses/UnauthorizedManagement"
3597
+ "403":
3598
+ $ref: "#/components/responses/ForbiddenScope"
3599
+ /api/v1/reports/usage-summary:
3600
+ get:
3601
+ operationId: getUsageSummary
3602
+ tags: [reporting]
3603
+ summary: Get grouped usage totals
3604
+ x-required-scopes: ["report:read"]
3605
+ security:
3606
+ - bearerAuth: []
3607
+ parameters:
3608
+ - $ref: "#/components/parameters/LimitParam"
3609
+ - in: query
3610
+ name: from
3611
+ schema:
3612
+ type: string
3613
+ format: date-time
3614
+ - in: query
3615
+ name: to
3616
+ schema:
3617
+ type: string
3618
+ format: date-time
3619
+ - in: query
3620
+ name: group_by
3621
+ schema:
3622
+ type: string
3623
+ - in: query
3624
+ name: bucket
3625
+ schema:
3626
+ type: string
3627
+ enum: [1h, 1d]
3628
+ - in: query
3629
+ name: product_id
3630
+ schema:
3631
+ type: string
3632
+ - in: query
3633
+ name: customer_id
3634
+ schema:
3635
+ type: string
3636
+ - in: query
3637
+ name: license_id
3638
+ schema:
3639
+ type: string
3640
+ - in: query
3641
+ name: order_id
3642
+ schema:
3643
+ type: string
3644
+ - in: query
3645
+ name: subscription_id
3646
+ schema:
3647
+ type: string
3648
+ - in: query
3649
+ name: feature_code
3650
+ schema:
3651
+ type: string
3652
+ responses:
3653
+ "200":
3654
+ description: Grouped usage summary.
3655
+ content:
3656
+ application/json:
3657
+ schema:
3658
+ type: object
3659
+ required: [data, meta]
3660
+ properties:
3661
+ data:
3662
+ type: object
3663
+ meta:
3664
+ $ref: "#/components/schemas/ResponseMeta"
3665
+ "400":
3666
+ $ref: "#/components/responses/InvalidQuery"
3667
+ "401":
3668
+ $ref: "#/components/responses/UnauthorizedManagement"
3669
+ "403":
3670
+ $ref: "#/components/responses/ForbiddenScope"
3671
+ /api/v1/reports/usage-ledger:
3672
+ get:
3673
+ operationId: listUsageLedger
3674
+ tags: [reporting]
3675
+ summary: List row-level usage ledger entries
3676
+ x-required-scopes: ["report:read"]
3677
+ security:
3678
+ - bearerAuth: []
3679
+ parameters:
3680
+ - $ref: "#/components/parameters/CursorParam"
3681
+ - $ref: "#/components/parameters/LimitParam"
3682
+ - in: query
3683
+ name: from
3684
+ schema:
3685
+ type: string
3686
+ format: date-time
3687
+ - in: query
3688
+ name: to
3689
+ schema:
3690
+ type: string
3691
+ format: date-time
3692
+ - in: query
3693
+ name: action
3694
+ schema:
3695
+ type: string
3696
+ - in: query
3697
+ name: product_id
3698
+ schema:
3699
+ type: string
3700
+ - in: query
3701
+ name: customer_id
3702
+ schema:
3703
+ type: string
3704
+ - in: query
3705
+ name: license_id
3706
+ schema:
3707
+ type: string
3708
+ - in: query
3709
+ name: order_id
3710
+ schema:
3711
+ type: string
3712
+ - in: query
3713
+ name: subscription_id
3714
+ schema:
3715
+ type: string
3716
+ - in: query
3717
+ name: feature_code
3718
+ schema:
3719
+ type: string
3720
+ responses:
3721
+ "200":
3722
+ description: Usage ledger page.
3723
+ content:
3724
+ application/json:
3725
+ schema:
3726
+ type: object
3727
+ required: [data, page_info, meta]
3728
+ properties:
3729
+ data:
3730
+ type: array
3731
+ items:
3732
+ type: object
3733
+ page_info:
3734
+ $ref: "#/components/schemas/EventPageInfo"
3735
+ meta:
3736
+ $ref: "#/components/schemas/ResponseMeta"
3737
+ "400":
3738
+ $ref: "#/components/responses/InvalidQuery"
3739
+ "401":
3740
+ $ref: "#/components/responses/UnauthorizedManagement"
3741
+ "403":
3742
+ $ref: "#/components/responses/ForbiddenScope"
3743
+ /api/v1/reports/license-audit:
3744
+ get:
3745
+ operationId: getLicenseAuditReport
3746
+ tags: [reporting]
3747
+ summary: Get a license audit report
3748
+ x-required-scopes: ["report:read"]
3749
+ security:
3750
+ - bearerAuth: []
3751
+ parameters:
3752
+ - $ref: "#/components/parameters/LimitParam"
3753
+ - in: query
3754
+ name: license_id
3755
+ required: true
3756
+ schema:
3757
+ type: string
3758
+ - in: query
3759
+ name: from
3760
+ schema:
3761
+ type: string
3762
+ format: date-time
3763
+ - in: query
3764
+ name: to
3765
+ schema:
3766
+ type: string
3767
+ format: date-time
3768
+ responses:
3769
+ "200":
3770
+ description: License audit report.
3771
+ content:
3772
+ application/json:
3773
+ schema:
3774
+ type: object
3775
+ required: [data, meta]
3776
+ properties:
3777
+ data:
3778
+ type: object
3779
+ meta:
3780
+ $ref: "#/components/schemas/ResponseMeta"
3781
+ "400":
3782
+ $ref: "#/components/responses/InvalidQuery"
3783
+ "401":
3784
+ $ref: "#/components/responses/UnauthorizedManagement"
3785
+ "403":
3786
+ $ref: "#/components/responses/ForbiddenScope"
3787
+ /api/v1/reports/customer-summary:
3788
+ get:
3789
+ operationId: getCustomerSummary
3790
+ tags: [reporting]
3791
+ summary: Get customer-level reporting summary
3792
+ x-required-scopes: ["report:read"]
3793
+ security:
3794
+ - bearerAuth: []
3795
+ parameters:
3796
+ - $ref: "#/components/parameters/LimitParam"
3797
+ - in: query
3798
+ name: customer_id
3799
+ required: true
3800
+ schema:
3801
+ type: string
3802
+ - in: query
3803
+ name: from
3804
+ schema:
3805
+ type: string
3806
+ format: date-time
3807
+ - in: query
3808
+ name: to
3809
+ schema:
3810
+ type: string
3811
+ format: date-time
3812
+ responses:
3813
+ "200":
3814
+ description: Customer summary report.
3815
+ content:
3816
+ application/json:
3817
+ schema:
3818
+ type: object
3819
+ required: [data, meta]
3820
+ properties:
3821
+ data:
3822
+ type: object
3823
+ meta:
3824
+ $ref: "#/components/schemas/ResponseMeta"
3825
+ "400":
3826
+ $ref: "#/components/responses/InvalidQuery"
3827
+ "401":
3828
+ $ref: "#/components/responses/UnauthorizedManagement"
3829
+ "403":
3830
+ $ref: "#/components/responses/ForbiddenScope"
3831
+ /api/v1/reports/subscription-settlement:
3832
+ get:
3833
+ operationId: getSubscriptionSettlement
3834
+ tags: [reporting]
3835
+ summary: Get subscription or order settlement summary
3836
+ x-required-scopes: ["report:read"]
3837
+ security:
3838
+ - bearerAuth: []
3839
+ parameters:
3840
+ - $ref: "#/components/parameters/LimitParam"
3841
+ - in: query
3842
+ name: subscription_id
3843
+ schema:
3844
+ type: string
3845
+ - in: query
3846
+ name: order_id
3847
+ schema:
3848
+ type: string
3849
+ - in: query
3850
+ name: from
3851
+ schema:
3852
+ type: string
3853
+ format: date-time
3854
+ - in: query
3855
+ name: to
3856
+ schema:
3857
+ type: string
3858
+ format: date-time
3859
+ - in: query
3860
+ name: group_by
3861
+ schema:
3862
+ type: string
3863
+ responses:
3864
+ "200":
3865
+ description: Settlement summary.
3866
+ content:
3867
+ application/json:
3868
+ schema:
3869
+ type: object
3870
+ required: [data, meta]
3871
+ properties:
3872
+ data:
3873
+ type: object
3874
+ meta:
3875
+ $ref: "#/components/schemas/ResponseMeta"
3876
+ "400":
3877
+ $ref: "#/components/responses/InvalidQuery"
3878
+ "401":
3879
+ $ref: "#/components/responses/UnauthorizedManagement"
3880
+ "403":
3881
+ $ref: "#/components/responses/ForbiddenScope"
3882
+ /api/v1/reports/exports:
3883
+ post:
3884
+ operationId: createReportExport
3885
+ tags: [reporting]
3886
+ summary: Create a frozen report export
3887
+ x-required-scopes: ["report:export"]
3888
+ security:
3889
+ - bearerAuth: []
3890
+ requestBody:
3891
+ required: true
3892
+ content:
3893
+ application/json:
3894
+ schema:
3895
+ $ref: "#/components/schemas/ReportExportCreateRequest"
3896
+ responses:
3897
+ "201":
3898
+ description: Report export created.
3899
+ content:
3900
+ application/json:
3901
+ schema:
3902
+ type: object
3903
+ required: [data, meta]
3904
+ properties:
3905
+ data:
3906
+ $ref: "#/components/schemas/ReportExportMetadata"
3907
+ meta:
3908
+ $ref: "#/components/schemas/ResponseMeta"
3909
+ "400":
3910
+ $ref: "#/components/responses/InvalidQuery"
3911
+ "401":
3912
+ $ref: "#/components/responses/UnauthorizedManagement"
3913
+ "403":
3914
+ $ref: "#/components/responses/ForbiddenScope"
3915
+ /api/v1/reports/exports/{id}:
3916
+ get:
3917
+ operationId: getReportExport
3918
+ tags: [reporting]
3919
+ summary: Get report export metadata
3920
+ x-required-scopes: ["report:export"]
3921
+ security:
3922
+ - bearerAuth: []
3923
+ parameters:
3924
+ - in: path
3925
+ name: id
3926
+ required: true
3927
+ schema:
3928
+ type: string
3929
+ responses:
3930
+ "200":
3931
+ description: Report export metadata.
3932
+ content:
3933
+ application/json:
3934
+ schema:
3935
+ type: object
3936
+ required: [data, meta]
3937
+ properties:
3938
+ data:
3939
+ $ref: "#/components/schemas/ReportExportMetadata"
3940
+ meta:
3941
+ $ref: "#/components/schemas/ResponseMeta"
3942
+ "401":
3943
+ $ref: "#/components/responses/UnauthorizedManagement"
3944
+ "403":
3945
+ $ref: "#/components/responses/ForbiddenScope"
3946
+ /api/v1/reports/exports/{id}/download:
3947
+ get:
3948
+ operationId: downloadReportExport
3949
+ tags: [reporting]
3950
+ summary: Download a frozen report export snapshot
3951
+ x-required-scopes: ["report:export"]
3952
+ security:
3953
+ - bearerAuth: []
3954
+ parameters:
3955
+ - in: path
3956
+ name: id
3957
+ required: true
3958
+ schema:
3959
+ type: string
3960
+ responses:
3961
+ "200":
3962
+ description: Stored report export snapshot.
3963
+ content:
3964
+ application/json:
3965
+ schema:
3966
+ type: object
3967
+ text/csv:
3968
+ schema:
3969
+ type: string
3970
+ application/pdf:
3971
+ schema:
3972
+ type: string
3973
+ format: binary
3974
+ "401":
3975
+ $ref: "#/components/responses/UnauthorizedManagement"
3976
+ "403":
3977
+ $ref: "#/components/responses/ForbiddenScope"
3978
+ /api/v1/ops/summary:
3979
+ get:
3980
+ operationId: getOpsSummary
3981
+ tags: [ops]
3982
+ summary: Get operational summary cards
3983
+ x-required-scopes: ["ops:read"]
3984
+ security:
3985
+ - bearerAuth: []
3986
+ parameters:
3987
+ - in: query
3988
+ name: from
3989
+ schema:
3990
+ type: string
3991
+ format: date-time
3992
+ - in: query
3993
+ name: to
3994
+ schema:
3995
+ type: string
3996
+ format: date-time
3997
+ - in: query
3998
+ name: product_id
3999
+ schema:
4000
+ type: string
4001
+ - in: query
4002
+ name: customer_id
4003
+ schema:
4004
+ type: string
4005
+ - in: query
4006
+ name: license_id
4007
+ schema:
4008
+ type: string
4009
+ responses:
4010
+ "200":
4011
+ description: Operational summary.
4012
+ content:
4013
+ application/json:
4014
+ schema:
4015
+ type: object
4016
+ required: [data, meta]
4017
+ properties:
4018
+ data:
4019
+ type: object
4020
+ meta:
4021
+ $ref: "#/components/schemas/ResponseMeta"
4022
+ "400":
4023
+ $ref: "#/components/responses/InvalidQuery"
4024
+ "401":
4025
+ $ref: "#/components/responses/UnauthorizedManagement"
4026
+ "403":
4027
+ $ref: "#/components/responses/ForbiddenScope"
4028
+ /api/v1/ops/runtime-errors:
4029
+ get:
4030
+ operationId: listRuntimeErrorGroups
4031
+ tags: [ops]
4032
+ summary: List grouped runtime error counts
4033
+ x-required-scopes: ["ops:read"]
4034
+ security:
4035
+ - bearerAuth: []
4036
+ parameters:
4037
+ - $ref: "#/components/parameters/LimitParam"
4038
+ - in: query
4039
+ name: from
4040
+ schema:
4041
+ type: string
4042
+ format: date-time
4043
+ - in: query
4044
+ name: to
4045
+ schema:
4046
+ type: string
4047
+ format: date-time
4048
+ - in: query
4049
+ name: product_id
4050
+ schema:
4051
+ type: string
4052
+ - in: query
4053
+ name: customer_id
4054
+ schema:
4055
+ type: string
4056
+ - in: query
4057
+ name: license_id
4058
+ schema:
4059
+ type: string
4060
+ - in: query
4061
+ name: app_version
4062
+ schema:
4063
+ type: string
4064
+ - in: query
4065
+ name: endpoint
4066
+ schema:
4067
+ type: string
4068
+ enum:
4069
+ - activate
4070
+ - validate
4071
+ - check
4072
+ - consume
4073
+ - offline
4074
+ - deactivate
4075
+ - floating_checkout
4076
+ - floating_checkin
4077
+ - floating_heartbeat
4078
+ - in: query
4079
+ name: group_by
4080
+ schema:
4081
+ type: string
4082
+ description: Comma-separated dimensions from `time`, `endpoint`, `reason_code`, `result_class`.
4083
+ - in: query
4084
+ name: bucket
4085
+ schema:
4086
+ type: string
4087
+ enum: [5m, 15m, 1h, 1d]
4088
+ responses:
4089
+ "200":
4090
+ description: Runtime error groups.
4091
+ content:
4092
+ application/json:
4093
+ schema:
4094
+ type: object
4095
+ required: [data, meta]
4096
+ properties:
4097
+ data:
4098
+ type: object
4099
+ meta:
4100
+ $ref: "#/components/schemas/ResponseMeta"
4101
+ "400":
4102
+ $ref: "#/components/responses/InvalidQuery"
4103
+ "401":
4104
+ $ref: "#/components/responses/UnauthorizedManagement"
4105
+ "403":
4106
+ $ref: "#/components/responses/ForbiddenScope"
4107
+ /api/v1/ops/webhook-health:
4108
+ get:
4109
+ operationId: getWebhookHealth
4110
+ tags: [ops]
4111
+ summary: Get webhook queue and failure health
4112
+ x-required-scopes: ["ops:read"]
4113
+ security:
4114
+ - bearerAuth: []
4115
+ parameters:
4116
+ - $ref: "#/components/parameters/LimitParam"
4117
+ - in: query
4118
+ name: from
4119
+ schema:
4120
+ type: string
4121
+ format: date-time
4122
+ - in: query
4123
+ name: to
4124
+ schema:
4125
+ type: string
4126
+ format: date-time
4127
+ - in: query
4128
+ name: endpoint_id
4129
+ schema:
4130
+ type: string
4131
+ responses:
4132
+ "200":
4133
+ description: Webhook health summary and grouped failures.
4134
+ content:
4135
+ application/json:
4136
+ schema:
4137
+ type: object
4138
+ required: [data, meta]
4139
+ properties:
4140
+ data:
4141
+ type: object
4142
+ meta:
4143
+ $ref: "#/components/schemas/ResponseMeta"
4144
+ "400":
4145
+ $ref: "#/components/responses/InvalidQuery"
4146
+ "401":
4147
+ $ref: "#/components/responses/UnauthorizedManagement"
4148
+ "403":
4149
+ $ref: "#/components/responses/ForbiddenScope"
3437
4150
  /api/v1/webhooks:
3438
4151
  get:
3439
4152
  operationId: listWebhookEndpoints