openapi: 3.2.0 info: title: APImetrics Invites 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: Invites description: Manage and accept invites to join the platform. paths: /api/2/account/invite/{invite_key_str}: post: tags: - Invites summary: Accept-Invite description: Accept an org or project invite by urlsafe key (email must match caller). operationId: accept-invite security: - OAuth2: [] - ApiKey: [] parameters: - name: invite_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/InviteResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Invites summary: Reject-Invite description: Delete (reject) an invite; email must match the caller's account. operationId: reject-invite security: - OAuth2: [] - ApiKey: [] parameters: - name: invite_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/InviteResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/2/account/invite/{invite_id}/{invite_secret}/: get: tags: - Invites summary: Verify-Invite-Secret description: Verify an invite link (invite_id + secret) and return the invite. operationId: verify-invite-secret security: - OAuth2: [] - ApiKey: [] parameters: - name: invite_id in: path required: true schema: type: string pattern: ^[A-Za-z0-9_-]+={0,2}$ title: Invite Code - name: invite_secret in: path required: true schema: type: string pattern: ^[A-Za-z0-9_-]+={0,2}$ title: Invite Code responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InviteResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Invites summary: Accept-Invite-Secret description: Accept an invite by link (invite_id + secret). operationId: accept-invite-secret security: - OAuth2: [] - ApiKey: [] parameters: - name: invite_id in: path required: true schema: type: string pattern: ^[A-Za-z0-9_-]+={0,2}$ title: Invite Code - name: invite_secret in: path required: true schema: type: string pattern: ^[A-Za-z0-9_-]+={0,2}$ title: Invite Code responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InviteResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/2/organizations/{org_id}/invites/: get: tags: - Invites summary: List-Org-Invites description: List pending invites for the organisation, ordered by email. operationId: list-org-invites security: - OAuth2: [] - ApiKey: [] parameters: - name: org_id in: path required: true schema: type: string pattern: ^[a-z0-9]{3,400}$ title: Organization ID responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InviteListResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Invites summary: Create-Org-Invite description: Create an invite for an account to join the organisation; sends an email. operationId: create-org-invite security: - OAuth2: [] - ApiKey: [] parameters: - name: org_id in: path required: true schema: type: string pattern: ^[a-z0-9]{3,400}$ title: Organization ID requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateOrgInviteBody' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InviteResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/2/organizations/{org_id}/invites/{invite_key_str}/: delete: tags: - Invites summary: Delete-Org-Invite description: Delete a pending org invite. 404 if absent, 403 if org_id mismatch. operationId: delete-org-invite security: - OAuth2: [] - ApiKey: [] parameters: - name: invite_key_str in: path required: true schema: type: string pattern: ^[A-Za-z0-9_-]+$ title: Resource ID - name: org_id in: path required: true schema: type: string pattern: ^[a-z0-9]{3,400}$ title: Organization ID responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InviteStatusResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/2/projects/{project_key_str}/invites/: get: tags: - Invites summary: List-Project-Invites description: List pending invites for the project, ordered by email. operationId: list-project-invites security: - OAuth2: [] - ApiKey: [] parameters: - 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/ProjectInviteListResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Invites summary: Create-Project-Invite description: Create an invite for an account to join the project; sends an email. operationId: create-project-invite 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/CreateProjectInviteBody' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/InviteResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/2/projects/{project_key_str}/invites/{invite_key_str}/: delete: tags: - Invites summary: Delete-Project-Invite description: Delete a pending project invite. 404 if absent or from another project. operationId: delete-project-invite security: - OAuth2: [] - ApiKey: [] parameters: - name: invite_key_str 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/InviteResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: ProjectInviteListMeta: properties: more: type: boolean title: More next_cursor: anyOf: - type: string - type: 'null' title: Next Cursor project_id: anyOf: - type: string - type: 'null' title: Project Id type: object required: - more title: ProjectInviteListMeta InviteListMeta: properties: more: type: boolean title: More next_cursor: anyOf: - type: string - type: 'null' title: Next Cursor type: object required: - more title: InviteListMeta InviteResponse: properties: id: anyOf: - type: string - type: 'null' title: Id invited_by: anyOf: - type: string - type: 'null' title: Invited By invited_email: anyOf: - type: string - type: 'null' title: Invited Email email: anyOf: - type: string - type: 'null' title: Email org_id: anyOf: - type: string - type: 'null' title: Org Id project_id: anyOf: - type: string - type: 'null' title: Project Id name: anyOf: - type: string - type: 'null' title: Name access_level: anyOf: - type: string - type: 'null' title: Access Level roles: items: type: string type: array title: Roles last_update: anyOf: - type: string format: date-time - type: 'null' title: Last Update created: anyOf: - type: string format: date-time - type: 'null' title: Created type: object title: InviteResponse CreateProjectInviteBody: properties: email: type: string title: Email name: anyOf: - type: string - type: 'null' title: Name access_level: anyOf: - type: string - type: 'null' title: Access Level type: object required: - email title: CreateProjectInviteBody CreateOrgInviteBody: properties: email: type: string title: Email name: anyOf: - type: string - type: 'null' title: Name access_level: anyOf: - type: string - type: 'null' title: Access Level roles: items: type: string type: array title: Roles type: object required: - email title: CreateOrgInviteBody ProjectInviteListResponse: properties: meta: $ref: '#/components/schemas/ProjectInviteListMeta' results: items: $ref: '#/components/schemas/InviteResponse' type: array title: Results type: object required: - meta - results title: ProjectInviteListResponse InviteStatusResponse: properties: status: type: string title: Status type: object required: - status title: InviteStatusResponse HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError InviteListResponse: properties: meta: $ref: '#/components/schemas/InviteListMeta' results: items: $ref: '#/components/schemas/InviteResponse' type: array title: Results type: object required: - meta - results title: InviteListResponse 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 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