openapi: 3.0.3 info: title: Binarly Assistant RoleBinding API version: 4.275.2 security: - auth: [] tags: - name: RoleBinding paths: /api/v4/roles: get: summary: List Roles operationId: ListRoles x-permission: '' tags: - RoleBinding responses: '200': description: success content: application/json: schema: $ref: '#/components/schemas/WithRoles' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/InternalServerError' /api/v4/roleBindings: get: summary: List Role Bindings operationId: ListRoleBindings x-permission: '{resourceType}.roleBindings.list' tags: - RoleBinding parameters: - $ref: '#/components/parameters/QueryResourceName' responses: '200': description: success content: application/json: schema: $ref: '#/components/schemas/WithRoleBindings' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' post: summary: Create Role Binding operationId: CreateRoleBinding x-permission: '{resourceType}.roleBindings.create' tags: - RoleBinding requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateRoleBindingPayload' responses: '201': description: success content: application/json: schema: $ref: '#/components/schemas/RoleBinding' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '409': $ref: '#/components/responses/Conflict' '500': $ref: '#/components/responses/InternalServerError' /api/v4/roleBindings/{roleBindingId}: delete: summary: Delete Role Binding operationId: DeleteRoleBinding x-permission: '{resourceType}.roleBindings.delete' tags: - RoleBinding parameters: - name: roleBindingId required: true in: path schema: $ref: '#/components/schemas/ULID' responses: '200': description: success content: application/json: schema: $ref: '#/components/schemas/RoleBinding' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' patch: summary: Update Role Binding operationId: UpdateRoleBinding x-permission: '{resourceType}.roleBindings.update' tags: - RoleBinding parameters: - name: roleBindingId required: true in: path schema: $ref: '#/components/schemas/ULID' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateRoleBindingPayload' responses: '200': description: success content: application/json: schema: $ref: '#/components/schemas/RoleBinding' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '409': $ref: '#/components/responses/Conflict' '500': $ref: '#/components/responses/InternalServerError' components: responses: Forbidden: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenErrorResponse' NotFound: description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' Conflict: description: Conflict content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' Unauthorized: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' BadRequest: description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' InternalServerError: description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' schemas: WithOptionalResourceType: type: object properties: resourceType: $ref: '#/components/schemas/ResourceType' RoleBinding: type: object required: - id - role - identity - resourceName properties: id: $ref: '#/components/schemas/ULID' role: $ref: '#/components/schemas/Role' identity: oneOf: - $ref: '#/components/schemas/User' - $ref: '#/components/schemas/Group' resourceName: $ref: '#/components/schemas/ResourceName' WithResourceType: type: object required: - resourceType properties: resourceType: $ref: '#/components/schemas/ResourceType' ErrorDetail: type: object required: - error properties: reason: type: string x-go-type-skip-optional-pointer: true field: type: string x-go-type-skip-optional-pointer: true service: type: string x-go-type-skip-optional-pointer: true User: readOnly: true allOf: - $ref: '#/components/schemas/WithUserId' - $ref: '#/components/schemas/WithOptionalId' - $ref: '#/components/schemas/WithOptionalCreateTime' - $ref: '#/components/schemas/WithOptionalEmail' - $ref: '#/components/schemas/WithOptionalUserStatus' - $ref: '#/components/schemas/WithOptionalResourceType' Role: allOf: - $ref: '#/components/schemas/WithId' - $ref: '#/components/schemas/WithName' - $ref: '#/components/schemas/WithPermissions' - $ref: '#/components/schemas/WithBoundResourceTypes' WithBoundResourceTypes: type: object required: - boundResourceTypes properties: boundResourceTypes: type: array items: $ref: '#/components/schemas/ResourceType' UpdateRoleBindingPayload: type: object required: - roleId properties: roleId: $ref: '#/components/schemas/ULID' WithRoles: type: object required: - roles properties: roles: type: array items: $ref: '#/components/schemas/Role' WithOptionalId: type: object properties: id: readOnly: true allOf: - $ref: '#/components/schemas/ULID' WithOptionalEmail: type: object properties: email: type: string example: user@binarly.io Group: allOf: - $ref: '#/components/schemas/WithId' - $ref: '#/components/schemas/WithCreateTime' - $ref: '#/components/schemas/WithName' - $ref: '#/components/schemas/WithResourceType' WithOptionalUserStatus: type: object properties: status: type: string x-go-type: string enum: - active - archived ForbiddenErrorResponse: type: object required: - message - permission - resourceName properties: message: type: string permission: type: string resourceName: type: string details: type: array items: $ref: '#/components/schemas/ErrorDetail' WithName: type: object required: - name properties: name: type: string ResourceType: type: string enum: - Org - Group - Product - User - Image - Finding - Occurrence ErrorResponse: required: - message type: object properties: message: type: string readOnly: true x-go-type-skip-optional-pointer: true details: type: array items: $ref: '#/components/schemas/ErrorDetail' WithPermissions: type: object required: - permissions properties: permissions: type: array items: type: string example: users.create ResourceName: type: string example: products/{productId} ULID: type: string format: ulid minLength: 26 maxLength: 26 example: 01ARZ3NDEKTSV4RRFFQ69G5FAV x-go-type: ulid.ULID x-go-type-import: path: github.com/oklog/ulid/v2 WithRoleBindings: type: object required: - roleBindings properties: roleBindings: type: array items: $ref: '#/components/schemas/RoleBinding' WithId: type: object required: - id properties: id: readOnly: true allOf: - $ref: '#/components/schemas/ULID' WithCreateTime: type: object required: - createTime properties: createTime: type: string readOnly: true example: '2024-01-01T01:00:00Z' WithOptionalCreateTime: type: object properties: createTime: type: string readOnly: true example: '2024-01-01T01:00:00Z' CreateRoleBindingPayload: type: object required: - roleId - identityId - identityResourceType - resourceName properties: roleId: $ref: '#/components/schemas/ULID' identityId: $ref: '#/components/schemas/ULID' identityResourceType: $ref: '#/components/schemas/ResourceType' resourceName: $ref: '#/components/schemas/ResourceName' WithUserId: type: object required: - userId properties: userId: type: string readOnly: true x-go-type-skip-optional-pointer: true parameters: QueryResourceName: name: resourceName required: true in: query schema: type: string securitySchemes: auth: type: http scheme: bearer bearerFormat: JWT