openapi: 3.2.0 info: title: Oxide Region Policy API description: API for interacting with the Oxide control plane contact: url: https://oxide.computer email: api@oxide.computer version: 2026081901.0.0 tags: - name: policy description: System-wide IAM policy externalDocs: url: http://docs.oxide.computer/api/policy paths: /v1/system/policy: get: tags: - policy summary: Fetch top-level IAM policy operationId: system_policy_view responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/FleetRolePolicy' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' put: tags: - policy summary: Update top-level IAM policy operationId: system_policy_update requestBody: content: application/json: schema: $ref: '#/components/schemas/FleetRolePolicy' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/FleetRolePolicy' 4XX: $ref: '#/components/responses/Error' 5XX: $ref: '#/components/responses/Error' components: schemas: FleetRolePolicy: description: 'Policy for a particular resource Note that the Policy only describes access granted explicitly for this resource. The policies of parent resources can also cause a user to have access to this resource.' type: object properties: role_assignments: description: Roles directly assigned on this resource type: array items: $ref: '#/components/schemas/FleetRoleRoleAssignment' required: - role_assignments FleetRole: type: string enum: - admin - collaborator - viewer FleetRoleRoleAssignment: description: 'Describes the assignment of a particular role on a particular resource to a particular identity (user, group, etc.) The resource is not part of this structure. Rather, `RoleAssignment`s are put into a `Policy` and that Policy is applied to a particular resource.' type: object properties: identity_id: type: string format: uuid identity_type: $ref: '#/components/schemas/IdentityType' role_name: $ref: '#/components/schemas/FleetRole' required: - identity_id - identity_type - role_name Error: description: Error information from a response. type: object properties: error_code: type: string message: type: string request_id: type: string required: - message - request_id IdentityType: description: Describes what kind of identity is described by an id type: string enum: - silo_user - silo_group responses: Error: description: Error content: application/json: schema: $ref: '#/components/schemas/Error'