v4

latestOpenAPI 3.1.02026-08-02261331761.5 KB
Resources

Create Resource

Creates a new resource (a type of object you may protect with permissions).

post/v2/schema/{proj_id}/{env_id}/resources

Path parameters

proj_idstring required

Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").

Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").

env_idstring required

Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").

Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").

Request body

keystring required

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.

namestring required

The name of the resource

urnstring

The URN (Uniform Resource Name) of the resource

descriptionstring

An optional longer description of what this resource respresents in your system

actionsobject required
    A actions definition block, typically contained within a resource type definition block.
    The actions represents the ways you can interact with a protected resource.
    
type_attributesobject

optional dictionary of key-value pairs that can be used to store arbitrary metadata about this resource. This metadata can be used to filter resource using query parameters with attr_ prefix

attributesobject

Attributes that each resource of this type defines, and can be used in your ABAC policies.

rolesobject

Roles defined on this resource. The key is the role name, and the value contains the role properties such as granted permissions, base roles, etc.

relationsobject

Relations to other resources. The key is the relation key, and the value is the related resource.

v1compat_pathstring
v1compat_typestring
v1compat_namestring

Example request

{
  "key": "repository",
  "name": "Repository",
  "actions": {
    "clone": {},
    "read": {},
    "push": {}
  },
  "roles": {
    "contributor": {
      "name": "contributor",
      "permissions": [
        "read"
      ],
      "description": "the contributor role can only read from the repo"
    },
    "maintainer": {
      "name": "maintainer",
      "permissions": [
        "push"
      ]
    }
  },
  "relations": {
    "parent": "Organization"
  },
  "attributes": {
    "created": {
      "type": "time",
      "description": "the time (timestamp) the repository was created"
    },
    "private": {
      "type": "bool",
      "description": "whether the repo is private (if false, the repo is public)"
    }
  }
}

Response

Successful Response

keystring required

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.

idstring uuid required

Unique id of the resource

organization_idstring uuid required

Unique id of the organization that the resource belongs to.

project_idstring uuid required

Unique id of the project that the resource belongs to.

environment_idstring uuid required

Unique id of the environment that the resource belongs to.

created_atstring date-time required

Date and time when the resource was created (ISO_8601 format).

updated_atstring date-time required

Date and time when the resource was last updated/modified (ISO_8601 format).

namestring required

The name of the resource

urnstring

The URN (Uniform Resource Name) of the resource

descriptionstring

An optional longer description of what this resource respresents in your system

actionsobject
    A actions definition block, typically contained within a resource type definition block.
    The actions represents the ways you can interact with a protected resource.
    
type_attributesobject

optional dictionary of key-value pairs that can be used to store arbitrary metadata about this resource. This metadata can be used to filter resource using query parameters with attr_ prefix

attributesobject

Attributes that each resource of this type defines, and can be used in your ABAC policies.

rolesobject

Roles defined on this resource. The key is the role name, and the value contains the role properties such as granted permissions, etc.

relationsobject
    A relations definition block, typically contained within a resource type definition block.
    The relations represents the ways you can interact with a protected resource.
    
v1compat_pathstring
v1compat_typestring
v1compat_namestring
action_groupsobject

Example response

{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "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",
  "key": "repository",
  "name": "Repository",
  "urn": "prn:github:scm:repository",
  "description": "a git repository stored on github",
  "actions": {
    "clone": {
      "id": "90e21d70-2b1b-42f0-b492-8fd69c1d79d1"
    },
    "read": {
      "id": "2bc27751-6115-43c0-b68c-928cb46e34bc"
    },
    "push": {
      "id": "e06da336-6e03-41d6-a495-40b0d7537b2a"
    }
  },
  "roles": {
    "maintainer": {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "key": "maintainer",
      "name": "Maintainer",
      "description": "the maintainer role can read from the repo and push changes",
      "permissions": [
        "push"
      ],
      "extends": [
        "contributor"
      ],
      "resource": "repo",
      "granted_to": {
        "id": "8c0a5d99-de8d-4102-b363-7d17843156b3",
        "users_with_role": [
          {
            "role": "Admin",
            "on_resource": "organization",
            "linked_by_relation": "owner",
            "role_id": "4f9ad7ab-15bc-4e25-a5a5-57417b341719",
            "resource_id": "17dbf1da-4061-44a6-8f58-55719560f143",
            "relation_id": "534b2d8a-e8be-4039-828f-0607691ca48c"
          }
        ]
      },
      "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6",
      "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
      "environment_id": "40ef0e48-a11f-4963-a229-e396c9f7e7c4",
      "resource_id": "40ef0e48-a11f-4963-a229-e396c9f7e7dd",
      "created_at": "2019-08-24T14:15:22Z",
      "updated_at": "2019-08-24T14:15:22Z"
    }
  },
  "relations": {
    "parent": {
      "resource_id": "875e4351-e0f5-437f-8235-39547f4f362d",
      "relation_name": "parent",
      "resource": "parent-resource"
    }
  },
  "attributes": {
    "created": {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f11",
      "type": "time",
      "description": "the time (timestamp) the repository was created"
    },
    "private": {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f22",
      "type": "bool",
      "description": "whether the repo is private (if false, the repo is public)"
    }
  }
}