openapi: 3.2.0 info: title: APImetrics Project Roles API description: API for the APImetrics platform termsOfService: http://apimetrics.io/tos/ contact: name: APIContext Support url: https://apicontext.io/ email: support@apicontext.com license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html version: v2026-09-02 tags: - name: Project Roles description: Manage role-based access grants on projects. paths: /api/2/projects/{project_key_str}/roles/: get: tags: - Project Roles summary: List-Project-Roles description: List roles for a project. operationId: list-project-roles security: - OAuth2: [] - ApiKey: [] parameters: - name: project_key_str in: path required: true schema: type: string pattern: ^[A-Za-z0-9_-]+$ title: Resource ID - name: cursor in: query required: false schema: anyOf: - type: string - type: 'null' title: Cursor - name: limit in: query required: false schema: type: integer default: 25 title: Limit responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProjectRoleListResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Project Roles summary: Create-Project-Role description: Create a role on a project. operationId: create-project-role security: - OAuth2: [] - ApiKey: [] parameters: - name: project_key_str in: path required: true schema: type: string pattern: ^[A-Za-z0-9_-]+$ title: Resource ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateProjectRoleBody' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProjectRoleResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/2/projects/{project_key_str}/roles/{project_role_id}/: get: tags: - Project Roles summary: Get-Project-Role description: Get a project role by id. operationId: get-project-role security: - OAuth2: [] - ApiKey: [] parameters: - name: project_role_id in: path required: true schema: type: string pattern: ^[A-Za-z0-9_-]+$ title: Resource ID - name: project_key_str in: path required: true schema: type: string pattern: ^[A-Za-z0-9_-]+$ title: Resource ID responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProjectRoleResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Project Roles summary: Update-Project-Role description: Update a project role. operationId: update-project-role security: - OAuth2: [] - ApiKey: [] parameters: - name: project_role_id in: path required: true schema: type: string pattern: ^[A-Za-z0-9_-]+$ title: Resource ID - name: project_key_str in: path required: true schema: type: string pattern: ^[A-Za-z0-9_-]+$ title: Resource ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateProjectRoleBody' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProjectRoleResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Project Roles summary: Delete-Project-Role description: Delete a project role. operationId: delete-project-role security: - OAuth2: [] - ApiKey: [] parameters: - name: project_role_id in: path required: true schema: type: string pattern: ^[A-Za-z0-9_-]+$ title: Resource ID - name: project_key_str in: path required: true schema: type: string pattern: ^[A-Za-z0-9_-]+$ title: Resource ID responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProjectRoleResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: ProjectRoleResponse: properties: id: type: string title: Id role_id: type: string title: Role Id project: $ref: '#/components/schemas/ProjectResponse' access_level: type: string title: Access Level last_update: type: string format: date-time title: Last Update created: type: string format: date-time title: Created type: object required: - id - role_id - project - access_level - last_update - created title: ProjectRoleResponse examples: - access_level: EDITOR created: '2026-06-25T10:13:37.546136Z' id: ahFkZXZ-YXBpbWV0cmljcy1xY3IVCxIOQWNjb3VudFByb2plY3QYq0IM last_update: '2026-06-25T10:13:37.597335Z' project: created: '2026-06-19T09:06:47.046143Z' id: ahFkZXZ-YXBpbWV0cmljcy1xY3ILCxIEVXNlchieQgw last_update: '2026-06-19T09:06:47.046170Z' name: Project 1 org_id: apicontext tags: [] role_id: SRE CreateProjectRoleBody: properties: role_id: type: string title: Role Id access_level: type: string title: Access Level account_id: anyOf: - type: string - type: 'null' title: Account Id type: object required: - role_id - access_level title: CreateProjectRoleBody examples: - access_level: EDITOR role_id: SRE ProjectRoleListMeta: properties: next_cursor: anyOf: - type: integer - type: string - type: 'null' title: Next Cursor more: type: boolean title: More project_id: anyOf: - type: string - type: 'null' title: Project Id type: object required: - next_cursor - more title: ProjectRoleListMeta UpdateProjectRoleBody: properties: role_id: anyOf: - type: string - type: 'null' title: Role Id access_level: anyOf: - type: string - type: 'null' title: Access Level account_id: anyOf: - type: string - type: 'null' title: Account Id org_id: anyOf: - type: string - type: 'null' title: Org Id type: object title: UpdateProjectRoleBody examples: - access_level: OWNER role_id: MANAGER ProjectRoleListResponse: properties: meta: $ref: '#/components/schemas/ProjectRoleListMeta' results: items: $ref: '#/components/schemas/ProjectRoleResponse' type: array title: Results type: object required: - meta - results title: ProjectRoleListResponse examples: - meta: more: false results: - access_level: EDITOR created: '2026-06-25T10:13:37.546136Z' id: ahFkZXZ-YXBpbWV0cmljcy1xY3IVCxIOQWNjb3VudFByb2plY3QYq0IM last_update: '2026-06-25T10:13:37.597335Z' project: created: '2026-06-19T09:06:47.046143Z' id: ahFkZXZ-YXBpbWV0cmljcy1xY3ILCxIEVXNlchieQgw last_update: '2026-06-19T09:06:47.046170Z' name: Project 1 org_id: apicontext tags: [] role_id: SRE HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError ProjectResponse: properties: id: type: string title: Id name: type: string title: Name org_id: type: string title: Org Id tags: items: type: string type: array title: Tags system_tags: items: type: string type: array title: System Tags last_update: anyOf: - type: string format: date-time - type: 'null' title: Last Update created: anyOf: - type: string format: date-time - type: 'null' title: Created security_profile: anyOf: - type: string - type: 'null' title: Security Profile email: anyOf: - type: string - type: 'null' title: Email sub_info: anyOf: - additionalProperties: true type: object - type: 'null' title: Sub Info type: object required: - id - name - org_id - tags - system_tags - last_update - created - security_profile title: ProjectResponse examples: - created: '2026-06-19T09:06:47.046143Z' id: ahFkZXZ-YXBpbWV0cmljcy1xY3ILCxIEVXNlchieQgw last_update: '2026-06-19T09:06:47.046170Z' name: Project 1 org_id: apicontext sub_info: counts: org_test_run_count: 0 public_report_count: 0 scheduled_test_count: 288 test_setup_count: 4 user_test_run_count: 0 month_progress: 0.814 quotas: public_report_quota: 10 test_run_quota: 1000000 test_setup_quota: 1000 sub: backend: azure level: CONTRACT name: Enterprise org_id: apicontext plan: enterprise tags: [] securitySchemes: OAuth2: type: oauth2 flows: authorizationCode: scopes: openid: OpenID Connect identity profile: User profile email: User email address authorizationUrl: https://auth.apimetrics.io/authorize?audience=https://client.apimetrics.io tokenUrl: https://auth.apimetrics.io/oauth/token ApiKey: type: apiKey in: header name: X-Api-Key