@opusdns/api 1.14.0 → 1.16.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.
package/src/openapi.yaml CHANGED
@@ -2146,6 +2146,65 @@ components:
2146
2146
  - EUR
2147
2147
  title: Currency
2148
2148
  type: string
2149
+ CustomRoleCreate:
2150
+ description: Request body for creating a custom role.
2151
+ properties:
2152
+ description:
2153
+ anyOf:
2154
+ - type: string
2155
+ - type: 'null'
2156
+ description: Description of the custom role.
2157
+ title: Description
2158
+ name:
2159
+ description: Display name of the custom role as provided by the user (e.g.
2160
+ 'Support Staff').
2161
+ maxLength: 64
2162
+ minLength: 1
2163
+ title: Name
2164
+ type: string
2165
+ permissions:
2166
+ description: Permissions the role grants, as `resource:scope` (e.g. `domains:read`).
2167
+ The escalation-bearing admin/owner permissions cannot be granted.
2168
+ items:
2169
+ $ref: '#/components/schemas/PublicPermission'
2170
+ title: Permissions
2171
+ type: array
2172
+ required:
2173
+ - name
2174
+ - permissions
2175
+ title: CustomRoleCreate
2176
+ type: object
2177
+ CustomRoleUpdate:
2178
+ description: 'Request body for updating a custom role. Omitted fields are left
2179
+ unchanged; `permissions`
2180
+
2181
+ is a full replacement set when provided.'
2182
+ properties:
2183
+ description:
2184
+ anyOf:
2185
+ - type: string
2186
+ - type: 'null'
2187
+ description: New description.
2188
+ title: Description
2189
+ name:
2190
+ anyOf:
2191
+ - maxLength: 64
2192
+ minLength: 1
2193
+ type: string
2194
+ - type: 'null'
2195
+ description: New display name.
2196
+ title: Name
2197
+ permissions:
2198
+ anyOf:
2199
+ - items:
2200
+ $ref: '#/components/schemas/PublicPermission'
2201
+ type: array
2202
+ - type: 'null'
2203
+ description: Full replacement set of `resource:scope` permissions the role
2204
+ grants.
2205
+ title: Permissions
2206
+ title: CustomRoleUpdate
2207
+ type: object
2149
2208
  DeletePolicyType:
2150
2209
  enum:
2151
2210
  - immediate
@@ -9929,6 +9988,7 @@ components:
9929
9988
  type: object
9930
9989
  PublicResource:
9931
9990
  enum:
9991
+ - organization
9932
9992
  - domains
9933
9993
  - contacts
9934
9994
  - dns
@@ -9973,6 +10033,56 @@ components:
9973
10033
  - type: 'null'
9974
10034
  title: PublicRoleAssignmentRequest
9975
10035
  type: object
10036
+ PublicRoleDefinition:
10037
+ description: "A role as listed/read through the public API \u2014 built-in or\
10038
+ \ custom."
10039
+ properties:
10040
+ built_in:
10041
+ description: Built-in roles are immutable; custom roles are organization-owned.
10042
+ title: Built In
10043
+ type: boolean
10044
+ created_on:
10045
+ anyOf:
10046
+ - format: date-time
10047
+ type: string
10048
+ - type: 'null'
10049
+ description: Creation time (custom roles only).
10050
+ title: Created On
10051
+ description:
10052
+ anyOf:
10053
+ - type: string
10054
+ - type: 'null'
10055
+ description: Description of the role.
10056
+ title: Description
10057
+ label:
10058
+ description: Per-organization unique identifier (snake_case, e.g. 'support_staff').
10059
+ Used as the URL path parameter.
10060
+ title: Label
10061
+ type: string
10062
+ name:
10063
+ description: Display name of the role (e.g. 'Support Staff').
10064
+ title: Name
10065
+ type: string
10066
+ permissions:
10067
+ description: Permissions the role grants, as `resource:scope` strings.
10068
+ items:
10069
+ $ref: '#/components/schemas/PublicPermission'
10070
+ title: Permissions
10071
+ type: array
10072
+ updated_on:
10073
+ anyOf:
10074
+ - format: date-time
10075
+ type: string
10076
+ - type: 'null'
10077
+ description: Last update time (custom roles only).
10078
+ title: Updated On
10079
+ required:
10080
+ - label
10081
+ - name
10082
+ - built_in
10083
+ - permissions
10084
+ title: PublicRoleDefinition
10085
+ type: object
9976
10086
  PublicScope:
9977
10087
  enum:
9978
10088
  - read
@@ -12142,7 +12252,7 @@ info:
12142
12252
  \n\n"
12143
12253
  summary: OpusDNS - your gateway to a seamless domain management experience.
12144
12254
  title: OpusDNS API
12145
- version: 2026-06-12-181220
12255
+ version: 2026-06-16-085537
12146
12256
  x-logo:
12147
12257
  altText: OpusDNS API Reference
12148
12258
  url: https://d24lr4zqs1tgqh.cloudfront.net/c9505a20-5ae1-406c-b060-d392569caebf.jpg
@@ -24394,6 +24504,402 @@ paths:
24394
24504
  summary: Update an IP restriction
24395
24505
  tags:
24396
24506
  - organization
24507
+ /v1/organizations/role-permissions:
24508
+ get:
24509
+ description: Retrieves the catalog of `resource:scope` permissions a custom
24510
+ role may grant
24511
+ operationId: list_role_permissions_v1_organizations_role_permissions_get
24512
+ responses:
24513
+ '200':
24514
+ content:
24515
+ application/json:
24516
+ schema:
24517
+ $ref: '#/components/schemas/PublicPermissionSet'
24518
+ description: Successful Response
24519
+ '401':
24520
+ content:
24521
+ application/problem+json:
24522
+ example:
24523
+ code: ERROR_AUTHENTICATION
24524
+ detail: Additional error context.
24525
+ status: 401
24526
+ title: Authentication Error
24527
+ type: authentication
24528
+ schema:
24529
+ $ref: '#/components/schemas/Problem'
24530
+ description: Unauthorized
24531
+ '403':
24532
+ content:
24533
+ application/problem+json:
24534
+ example:
24535
+ code: ERROR_PERMISSION_DENIED
24536
+ detail: Insufficient permissions to perform this action
24537
+ status: 403
24538
+ title: Permission Denied
24539
+ type: permission-denied
24540
+ schema:
24541
+ $ref: '#/components/schemas/Problem'
24542
+ description: Forbidden
24543
+ '422':
24544
+ content:
24545
+ application/problem+json:
24546
+ schema:
24547
+ $ref: '#/components/schemas/HTTPValidationError'
24548
+ description: Validation Error
24549
+ security:
24550
+ - OAuth2PasswordBearer: []
24551
+ - APIKeyHeader: []
24552
+ summary: List grantable role permissions
24553
+ tags:
24554
+ - organization
24555
+ /v1/organizations/roles:
24556
+ get:
24557
+ description: 'Retrieves all roles assignable in the current organization: the
24558
+ built-in roles plus the organization''s custom roles'
24559
+ operationId: list_roles_v1_organizations_roles_get
24560
+ responses:
24561
+ '200':
24562
+ content:
24563
+ application/json:
24564
+ schema:
24565
+ items:
24566
+ $ref: '#/components/schemas/PublicRoleDefinition'
24567
+ title: Response List Roles V1 Organizations Roles Get
24568
+ type: array
24569
+ description: Successful Response
24570
+ '401':
24571
+ content:
24572
+ application/problem+json:
24573
+ example:
24574
+ code: ERROR_AUTHENTICATION
24575
+ detail: Additional error context.
24576
+ status: 401
24577
+ title: Authentication Error
24578
+ type: authentication
24579
+ schema:
24580
+ $ref: '#/components/schemas/Problem'
24581
+ description: Unauthorized
24582
+ '403':
24583
+ content:
24584
+ application/problem+json:
24585
+ example:
24586
+ code: ERROR_PERMISSION_DENIED
24587
+ detail: Insufficient permissions to perform this action
24588
+ status: 403
24589
+ title: Permission Denied
24590
+ type: permission-denied
24591
+ schema:
24592
+ $ref: '#/components/schemas/Problem'
24593
+ description: Forbidden
24594
+ '422':
24595
+ content:
24596
+ application/problem+json:
24597
+ schema:
24598
+ $ref: '#/components/schemas/HTTPValidationError'
24599
+ description: Validation Error
24600
+ security:
24601
+ - OAuth2PasswordBearer: []
24602
+ - APIKeyHeader: []
24603
+ summary: List roles
24604
+ tags:
24605
+ - organization
24606
+ post:
24607
+ description: Creates an organization-owned custom role granting the requested
24608
+ permissions. The escalation-bearing admin/owner permissions cannot be granted.
24609
+ operationId: create_role_v1_organizations_roles_post
24610
+ requestBody:
24611
+ content:
24612
+ application/json:
24613
+ schema:
24614
+ $ref: '#/components/schemas/CustomRoleCreate'
24615
+ required: true
24616
+ responses:
24617
+ '201':
24618
+ content:
24619
+ application/json:
24620
+ schema:
24621
+ $ref: '#/components/schemas/PublicRoleDefinition'
24622
+ description: Successful Response
24623
+ '401':
24624
+ content:
24625
+ application/problem+json:
24626
+ example:
24627
+ code: ERROR_AUTHENTICATION
24628
+ detail: Additional error context.
24629
+ status: 401
24630
+ title: Authentication Error
24631
+ type: authentication
24632
+ schema:
24633
+ $ref: '#/components/schemas/Problem'
24634
+ description: Unauthorized
24635
+ '403':
24636
+ content:
24637
+ application/problem+json:
24638
+ example:
24639
+ code: ERROR_PERMISSION_DENIED
24640
+ detail: Insufficient permissions to perform this action
24641
+ status: 403
24642
+ title: Permission Denied
24643
+ type: permission-denied
24644
+ schema:
24645
+ $ref: '#/components/schemas/Problem'
24646
+ description: Forbidden
24647
+ '409':
24648
+ content:
24649
+ application/problem+json:
24650
+ example:
24651
+ code: ERROR_DUPLICATE_ROLE_NAME
24652
+ detail: A role named 'support' already exists in this organization
24653
+ status: 409
24654
+ title: Role Management Error
24655
+ type: duplicate-role-name
24656
+ schema:
24657
+ $ref: '#/components/schemas/Problem'
24658
+ description: Conflict
24659
+ '422':
24660
+ content:
24661
+ application/problem+json:
24662
+ schema:
24663
+ $ref: '#/components/schemas/HTTPValidationError'
24664
+ description: Validation Error
24665
+ security:
24666
+ - OAuth2PasswordBearer: []
24667
+ - APIKeyHeader: []
24668
+ summary: Create a custom role
24669
+ tags:
24670
+ - organization
24671
+ /v1/organizations/roles/{label}:
24672
+ delete:
24673
+ description: Deletes a custom role. Refused while the role is still assigned
24674
+ to any subject, and for built-in roles.
24675
+ operationId: delete_role_v1_organizations_roles__label__delete
24676
+ parameters:
24677
+ - in: path
24678
+ name: label
24679
+ required: true
24680
+ schema:
24681
+ title: Label
24682
+ type: string
24683
+ responses:
24684
+ '204':
24685
+ description: Successful Response
24686
+ '401':
24687
+ content:
24688
+ application/problem+json:
24689
+ example:
24690
+ code: ERROR_AUTHENTICATION
24691
+ detail: Additional error context.
24692
+ status: 401
24693
+ title: Authentication Error
24694
+ type: authentication
24695
+ schema:
24696
+ $ref: '#/components/schemas/Problem'
24697
+ description: Unauthorized
24698
+ '403':
24699
+ content:
24700
+ application/problem+json:
24701
+ example:
24702
+ code: ERROR_PERMISSION_DENIED
24703
+ detail: Insufficient permissions to perform this action
24704
+ status: 403
24705
+ title: Permission Denied
24706
+ type: permission-denied
24707
+ schema:
24708
+ $ref: '#/components/schemas/Problem'
24709
+ description: Forbidden
24710
+ '404':
24711
+ content:
24712
+ application/problem+json:
24713
+ example:
24714
+ code: ERROR_ROLE_NOT_FOUND
24715
+ detail: Role not found
24716
+ role_name: support
24717
+ status: 404
24718
+ title: Role Management Error
24719
+ type: role-not-found
24720
+ schema:
24721
+ $ref: '#/components/schemas/Problem'
24722
+ description: Not Found
24723
+ '409':
24724
+ content:
24725
+ application/problem+json:
24726
+ example:
24727
+ binding_count: 1
24728
+ code: ERROR_ROLE_IN_USE
24729
+ detail: Role is still assigned to one or more subjects and cannot
24730
+ be deleted
24731
+ role_name: support
24732
+ status: 409
24733
+ title: Role Management Error
24734
+ type: role-in-use
24735
+ schema:
24736
+ $ref: '#/components/schemas/Problem'
24737
+ description: Conflict
24738
+ '422':
24739
+ content:
24740
+ application/problem+json:
24741
+ schema:
24742
+ $ref: '#/components/schemas/HTTPValidationError'
24743
+ description: Validation Error
24744
+ security:
24745
+ - OAuth2PasswordBearer: []
24746
+ - APIKeyHeader: []
24747
+ summary: Delete a custom role
24748
+ tags:
24749
+ - organization
24750
+ get:
24751
+ description: Retrieves a single role (built-in or custom) by its name
24752
+ operationId: get_role_v1_organizations_roles__label__get
24753
+ parameters:
24754
+ - in: path
24755
+ name: label
24756
+ required: true
24757
+ schema:
24758
+ title: Label
24759
+ type: string
24760
+ responses:
24761
+ '200':
24762
+ content:
24763
+ application/json:
24764
+ schema:
24765
+ $ref: '#/components/schemas/PublicRoleDefinition'
24766
+ description: Successful Response
24767
+ '401':
24768
+ content:
24769
+ application/problem+json:
24770
+ example:
24771
+ code: ERROR_AUTHENTICATION
24772
+ detail: Additional error context.
24773
+ status: 401
24774
+ title: Authentication Error
24775
+ type: authentication
24776
+ schema:
24777
+ $ref: '#/components/schemas/Problem'
24778
+ description: Unauthorized
24779
+ '403':
24780
+ content:
24781
+ application/problem+json:
24782
+ example:
24783
+ code: ERROR_PERMISSION_DENIED
24784
+ detail: Insufficient permissions to perform this action
24785
+ status: 403
24786
+ title: Permission Denied
24787
+ type: permission-denied
24788
+ schema:
24789
+ $ref: '#/components/schemas/Problem'
24790
+ description: Forbidden
24791
+ '404':
24792
+ content:
24793
+ application/problem+json:
24794
+ example:
24795
+ code: ERROR_ROLE_NOT_FOUND
24796
+ detail: Role not found
24797
+ role_name: support
24798
+ status: 404
24799
+ title: Role Management Error
24800
+ type: role-not-found
24801
+ schema:
24802
+ $ref: '#/components/schemas/Problem'
24803
+ description: Not Found
24804
+ '422':
24805
+ content:
24806
+ application/problem+json:
24807
+ schema:
24808
+ $ref: '#/components/schemas/HTTPValidationError'
24809
+ description: Validation Error
24810
+ security:
24811
+ - OAuth2PasswordBearer: []
24812
+ - APIKeyHeader: []
24813
+ summary: Get a role
24814
+ tags:
24815
+ - organization
24816
+ patch:
24817
+ description: Updates a custom role's name, description and/or permission set.
24818
+ Permission changes apply to every subject holding the role instantly. Built-in
24819
+ roles are immutable.
24820
+ operationId: update_role_v1_organizations_roles__label__patch
24821
+ parameters:
24822
+ - in: path
24823
+ name: label
24824
+ required: true
24825
+ schema:
24826
+ title: Label
24827
+ type: string
24828
+ requestBody:
24829
+ content:
24830
+ application/json:
24831
+ schema:
24832
+ $ref: '#/components/schemas/CustomRoleUpdate'
24833
+ required: true
24834
+ responses:
24835
+ '200':
24836
+ content:
24837
+ application/json:
24838
+ schema:
24839
+ $ref: '#/components/schemas/PublicRoleDefinition'
24840
+ description: Successful Response
24841
+ '401':
24842
+ content:
24843
+ application/problem+json:
24844
+ example:
24845
+ code: ERROR_AUTHENTICATION
24846
+ detail: Additional error context.
24847
+ status: 401
24848
+ title: Authentication Error
24849
+ type: authentication
24850
+ schema:
24851
+ $ref: '#/components/schemas/Problem'
24852
+ description: Unauthorized
24853
+ '403':
24854
+ content:
24855
+ application/problem+json:
24856
+ example:
24857
+ code: ERROR_PERMISSION_DENIED
24858
+ detail: Insufficient permissions to perform this action
24859
+ status: 403
24860
+ title: Permission Denied
24861
+ type: permission-denied
24862
+ schema:
24863
+ $ref: '#/components/schemas/Problem'
24864
+ description: Forbidden
24865
+ '404':
24866
+ content:
24867
+ application/problem+json:
24868
+ example:
24869
+ code: ERROR_ROLE_NOT_FOUND
24870
+ detail: Role not found
24871
+ role_name: support
24872
+ status: 404
24873
+ title: Role Management Error
24874
+ type: role-not-found
24875
+ schema:
24876
+ $ref: '#/components/schemas/Problem'
24877
+ description: Not Found
24878
+ '409':
24879
+ content:
24880
+ application/problem+json:
24881
+ example:
24882
+ code: ERROR_BUILT_IN_ROLE_IMMUTABLE
24883
+ detail: Built-in roles cannot be modified or deleted
24884
+ role_name: viewer
24885
+ status: 409
24886
+ title: Role Management Error
24887
+ type: built-in-role-immutable
24888
+ schema:
24889
+ $ref: '#/components/schemas/Problem'
24890
+ description: Conflict
24891
+ '422':
24892
+ content:
24893
+ application/problem+json:
24894
+ schema:
24895
+ $ref: '#/components/schemas/HTTPValidationError'
24896
+ description: Validation Error
24897
+ security:
24898
+ - OAuth2PasswordBearer: []
24899
+ - APIKeyHeader: []
24900
+ summary: Update a custom role
24901
+ tags:
24902
+ - organization
24397
24903
  /v1/organizations/users:
24398
24904
  get:
24399
24905
  description: Retrieves a paginated list of users under the current organization
@@ -26425,27 +26931,17 @@ paths:
26425
26931
  '403':
26426
26932
  content:
26427
26933
  application/problem+json:
26428
- example:
26429
- code: ERROR_USER_CANNOT_DELETE_SELF
26430
- detail: Additional error context.
26431
- status: 403
26432
- title: User Management Error
26433
- type: user-cannot-delete-self
26934
+ examples:
26935
+ User Management Error:
26936
+ value:
26937
+ code: ERROR_CANNOT_DELETE_OWNER
26938
+ detail: Additional error context.
26939
+ status: 403
26940
+ title: User Management Error
26941
+ type: cannot-delete-owner
26434
26942
  schema:
26435
26943
  $ref: '#/components/schemas/Problem'
26436
26944
  description: Forbidden
26437
- '409':
26438
- content:
26439
- application/problem+json:
26440
- example:
26441
- code: ERROR_USER_IS_LAST_ADMIN
26442
- detail: User is the last admin for the organization
26443
- status: 409
26444
- title: User Management Error
26445
- type: user-is-last-admin
26446
- schema:
26447
- $ref: '#/components/schemas/Problem'
26448
- description: Conflict
26449
26945
  '422':
26450
26946
  content:
26451
26947
  application/problem+json: