openapi: 3.0.3 info: title: Happy Scribe Exports Organization Memberships API description: The Happy Scribe API turns audio and video into text and subtitles programmatically. Submit work through the Orders API (automatic/machine or professional/human service), manage the resulting transcriptions, export finished transcripts into 15+ formats (SRT, VTT, STL, DOCX, PDF, TXT, JSON, CSV, XLSX, and editing-suite formats), and administer organizations and their members. Files are ingested by public URL or via a signed upload. All requests are REST over HTTPS and authenticated with a Bearer API token from your Happy Scribe account settings. Base URL https://www.happyscribe.com/api/v1. Endpoint paths and fields are grounded in the public developer documentation (dev.happyscribe.com); request/response schemas below are honestly modeled from that documentation and may not enumerate every field. version: '1.0' contact: name: Happy Scribe url: https://dev.happyscribe.com servers: - url: https://www.happyscribe.com/api/v1 description: Happy Scribe API v1 security: - bearerAuth: [] tags: - name: Organization Memberships description: Manage members and roles within an organization. paths: /organization_memberships: get: operationId: listOrganizationMemberships tags: - Organization Memberships summary: List organization memberships description: Lists memberships, optionally filtered by organization. parameters: - name: organization_id in: query required: false description: Filter memberships by organization. schema: type: string responses: '200': description: A list of memberships. content: application/json: schema: type: object properties: results: type: array items: $ref: '#/components/schemas/OrganizationMembership' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createOrganizationMembership tags: - Organization Memberships summary: Add a member to an organization description: Adds a user to an organization by email, with a role. requestBody: required: true content: application/json: schema: type: object required: - organization_id - email properties: organization_id: type: string email: type: string format: email role: type: string enum: - admin - member responses: '201': description: The created membership. content: application/json: schema: $ref: '#/components/schemas/OrganizationMembership' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/ValidationError' /organization_memberships/{id}: parameters: - $ref: '#/components/parameters/Id' patch: operationId: updateOrganizationMembership tags: - Organization Memberships summary: Update a membership description: Updates a member's role in an organization. requestBody: required: true content: application/json: schema: type: object properties: role: type: string enum: - admin - member responses: '200': description: The updated membership. content: application/json: schema: $ref: '#/components/schemas/OrganizationMembership' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/ValidationError' delete: operationId: deleteOrganizationMembership tags: - Organization Memberships summary: Remove a member description: Removes a member from an organization. responses: '204': description: The membership was removed. '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: responses: Unauthorized: description: Missing or invalid Bearer token. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/Error' ValidationError: description: The request payload failed validation. content: application/json: schema: $ref: '#/components/schemas/Error' parameters: Id: name: id in: path required: true description: The unique identifier of the resource. schema: type: string schemas: OrganizationMembership: type: object properties: id: type: string email: type: string format: email name: type: string role: type: string enum: - admin - member organizationId: type: string organizationName: type: string createdAt: type: string format: date-time updatedAt: type: string format: date-time Error: type: object properties: error: type: string message: type: string securitySchemes: bearerAuth: type: http scheme: bearer description: 'API token from your Happy Scribe account settings, passed as `Authorization: Bearer YOUR_API_TOKEN`.'