openapi: 3.1.0 info: title: Permit.io Access Requests (EAP) Access Requests (EAP) Resource Attributes API description: ' Authorization as a service ' version: 2.0.0 tags: - name: Resource Attributes description: ' Resource attributes allow you to specify an arbitrary schema attributes that are part of the definition of resource and must be included in any of its instances. Attributes are used to enforce attribute-based access control policies. For example, if we are building the github''s permissions system, we might want to know on the `Repository` resource whether the repo is private or now. In such case we will define a boolean `private` attributes that we can now use in our policies. ' paths: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/attributes: get: tags: - Resource Attributes summary: List Resource Attributes description: Lists all the attributes defined on the resource. operationId: list_resource_attributes parameters: - description: 'Either the unique id of the resource, or the URL-friendly key of the resource (i.e: the "slug").' required: true schema: type: string title: Resource Id description: 'Either the unique id of the resource, or the URL-friendly key of the resource (i.e: the "slug").' example: my_resource name: resource_id in: path - description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' required: true schema: type: string title: Proj Id description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' example: my_project name: proj_id in: path - description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' required: true schema: type: string title: Env Id description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' example: my_environment name: env_id in: path - description: Page number of the results to fetch, starting at 1. required: false schema: type: integer minimum: 1.0 title: Page description: Page number of the results to fetch, starting at 1. default: 1 name: page in: query - description: The number of results per page (max 100). required: false schema: type: integer maximum: 100.0 minimum: 1.0 title: Per Page description: The number of results per page (max 100). default: 30 name: per_page in: query responses: '200': description: Successful Response content: application/json: schema: items: $ref: '#/components/schemas/ResourceAttributeRead' type: array title: Response List Resource Attributes V2 Schema Proj Id Env Id Resources Resource Id Attributes Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBearer: [] post: tags: - Resource Attributes summary: Create Resource Attribute description: Creates a new attribute as part of the resource definition. operationId: create_resource_attribute parameters: - description: 'Either the unique id of the resource, or the URL-friendly key of the resource (i.e: the "slug").' required: true schema: type: string title: Resource Id description: 'Either the unique id of the resource, or the URL-friendly key of the resource (i.e: the "slug").' example: my_resource name: resource_id in: path - description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' required: true schema: type: string title: Proj Id description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' example: my_project name: proj_id in: path - description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' required: true schema: type: string title: Env Id description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' example: my_environment name: env_id in: path requestBody: content: application/json: schema: $ref: '#/components/schemas/ResourceAttributeCreate' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ResourceAttributeRead' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBearer: [] /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/attributes/{attribute_id}: get: tags: - Resource Attributes summary: Get Resource Attribute description: Gets a single attribute defined on the resource, if such attribute exists. operationId: get_resource_attribute parameters: - description: 'Either the unique id of the resource, or the URL-friendly key of the resource (i.e: the "slug").' required: true schema: type: string title: Resource Id description: 'Either the unique id of the resource, or the URL-friendly key of the resource (i.e: the "slug").' example: my_resource name: resource_id in: path - description: 'Either the unique id of the attribute, or the URL-friendly key of the attribute (i.e: the "slug").' required: true schema: type: string title: Attribute Id description: 'Either the unique id of the attribute, or the URL-friendly key of the attribute (i.e: the "slug").' name: attribute_id in: path - description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' required: true schema: type: string title: Proj Id description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' example: my_project name: proj_id in: path - description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' required: true schema: type: string title: Env Id description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' example: my_environment name: env_id in: path responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ResourceAttributeRead' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBearer: [] delete: tags: - Resource Attributes summary: Delete Resource Attribute description: 'Deletes the attribute and all its related data. Note: If the attribute is used by policies, removing it will cause the attribute to evaluate as `undefined`.' operationId: delete_resource_attribute parameters: - description: 'Either the unique id of the resource, or the URL-friendly key of the resource (i.e: the "slug").' required: true schema: type: string title: Resource Id description: 'Either the unique id of the resource, or the URL-friendly key of the resource (i.e: the "slug").' example: my_resource name: resource_id in: path - description: 'Either the unique id of the attribute, or the URL-friendly key of the attribute (i.e: the "slug").' required: true schema: type: string title: Attribute Id description: 'Either the unique id of the attribute, or the URL-friendly key of the attribute (i.e: the "slug").' name: attribute_id in: path - description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' required: true schema: type: string title: Proj Id description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' example: my_project name: proj_id in: path - description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' required: true schema: type: string title: Env Id description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' example: my_environment name: env_id in: path - description: Page number of the results to fetch, starting at 1. required: false schema: type: integer minimum: 1.0 title: Page description: Page number of the results to fetch, starting at 1. default: 1 name: page in: query - description: The number of results per page (max 100). required: false schema: type: integer maximum: 100.0 minimum: 1.0 title: Per Page description: The number of results per page (max 100). default: 30 name: per_page in: query responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBearer: [] patch: tags: - Resource Attributes summary: Update Resource Attribute description: 'Partially updates the attribute defined on a resource. Fields that will be provided will be completely overwritten.' operationId: update_resource_attribute parameters: - description: 'Either the unique id of the resource, or the URL-friendly key of the resource (i.e: the "slug").' required: true schema: type: string title: Resource Id description: 'Either the unique id of the resource, or the URL-friendly key of the resource (i.e: the "slug").' example: my_resource name: resource_id in: path - description: 'Either the unique id of the attribute, or the URL-friendly key of the attribute (i.e: the "slug").' required: true schema: type: string title: Attribute Id description: 'Either the unique id of the attribute, or the URL-friendly key of the attribute (i.e: the "slug").' name: attribute_id in: path - description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' required: true schema: type: string title: Proj Id description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' example: my_project name: proj_id in: path - description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' required: true schema: type: string title: Env Id description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' example: my_environment name: env_id in: path requestBody: content: application/json: schema: $ref: '#/components/schemas/ResourceAttributeUpdate' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ResourceAttributeRead' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBearer: [] components: schemas: ResourceAttributeCreate: properties: key: type: string pattern: ^[A-Za-z0-9\-_]+$ title: Key description: 'A URL-friendly name of the attribute (i.e: slug). You will be able to query later using this key instead of the id (UUID) of the attribute.' type: allOf: - $ref: '#/components/schemas/AttributeType' description: 'The type of the attribute, we currently support: `bool`, `number` (ints, floats), `time` (a timestamp), `string`, and `json`.' description: type: string title: Description description: An optional longer description of what this attribute respresents in your system additionalProperties: false type: object required: - key - type title: ResourceAttributeCreate example: key: private type: bool description: whether or not the github repository is private ResourceAttributeUpdate: properties: type: allOf: - $ref: '#/components/schemas/AttributeType' description: 'The type of the attribute, we currently support: `bool`, `number` (ints, floats), `time` (a timestamp), `string`, and `json`.' description: type: string title: Description description: An optional longer description of what this attribute respresents in your system additionalProperties: false type: object title: ResourceAttributeUpdate example: description: whether or not the github repository is private HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError ResourceAttributeRead: properties: type: allOf: - $ref: '#/components/schemas/AttributeType' description: 'The type of the attribute, we currently support: `bool`, `number` (ints, floats), `time` (a timestamp), `string`, and `json`.' description: type: string title: Description description: An optional longer description of what this attribute respresents in your system key: type: string title: Key description: 'A URL-friendly name of the attribute (i.e: slug). You will be able to query later using this key instead of the id (UUID) of the attribute.' id: type: string format: uuid title: Id description: Unique id of the attribute resource_id: type: string format: uuid title: Resource Id description: Unique id of the resource that the attribute belongs to. resource_key: type: string title: Resource Key description: 'A URL-friendly name of the resource (i.e: slug). You will be able to query later using this key instead of the id (UUID) of the resource.' organization_id: type: string format: uuid title: Organization Id description: Unique id of the organization that the attribute belongs to. project_id: type: string format: uuid title: Project Id description: Unique id of the project that the attribute belongs to. environment_id: type: string format: uuid title: Environment Id description: Unique id of the environment that the attribute belongs to. created_at: type: string format: date-time title: Created At description: Date and time when the attribute was created (ISO_8601 format). updated_at: type: string format: date-time title: Updated At description: Date and time when the attribute was last updated/modified (ISO_8601 format). built_in: type: boolean title: Built In description: Whether the attribute is built-in, and managed by the Permit system. additionalProperties: false type: object required: - type - key - id - resource_id - resource_key - organization_id - project_id - environment_id - created_at - updated_at - built_in title: ResourceAttributeRead example: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 key: private type: bool description: whether or not the github repository is private resource_id: 40ef0e48-a11f-4963-a229-e396c9f7e7dd resource_key: repository organization_id: 7c60d51f-b44e-4682-87d6-449835ea4de6 project_id: 405d8375-3514-403b-8c43-83ae74cfe0e9 environment_id: 40ef0e48-a11f-4963-a229-e396c9f7e7c4 created_at: '2019-08-24T14:15:22Z' updated_at: '2019-08-24T14:15:22Z' built_in: false ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError AttributeType: type: string enum: - bool - number - string - time - array - json - object - object_array title: AttributeType description: supported attribute primitives securitySchemes: HTTPBearer: type: http description: 'Authorization header, we support the bearer authentication scheme (see: RFC 6750)' scheme: bearer bearerFormat: JWT