openapi: 3.0.3 info: description: Generated from Ando's accepted public API v1 contract metadata. Current routes preserve legacy /api/v1 response envelopes while converging on the public https://api.ando.so/v1 shape. title: Ando Public Calls Members API version: v1 servers: - description: Canonical public API host. url: https://api.ando.so/v1 tags: - description: Workspace member detail routes. Existing v1 paths keep member compatibility spellings. name: Members paths: /members/{memberId}: get: description: Returns a workspace member visible to the authenticated API key. The v1 path and memberId parameter are compatibility spellings for a workspace member identifier. operationId: getMember parameters: - description: Workspace member identifier. v1 uses the legacy memberId spelling. in: path name: memberId required: true schema: description: Workspace member identifier. v1 uses the legacy memberId spelling. type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/MemberResult' description: Workspace member details. '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '409': $ref: '#/components/responses/Conflict' '429': $ref: '#/components/responses/RateLimited' '500': $ref: '#/components/responses/InternalError' security: - AndoApiKey: [] - BearerApiKey: [] summary: Get a workspace member tags: - Members x-ando-compatibility-mode: legacy_api_v1_compatibility x-ando-migration-target: standard_public x-ando-rate-limit-policy: implicit_legacy x-ando-route-id: api.api_v1_members_by_memberid.get x-ando-canonical-host: api.ando.so x-ando-documentation-owner: api_platform x-ando-principal-kind: workspace_api_key x-ando-public-api-route-class: public_data x-ando-public-path: /v1/members/:memberId x-ando-runtime-owner: api_platform x-ando-status-probe-owner: none x-ando-rollback-runtime: express x-ando-selected-runtime: express x-ando-target-runtime: convex_http components: responses: Forbidden: content: application/json: schema: $ref: '#/components/schemas/LegacyErrorResponse' description: Forbidden. Unauthorized: content: application/json: schema: $ref: '#/components/schemas/LegacyErrorResponse' description: Missing or invalid API key. RateLimited: content: application/json: schema: $ref: '#/components/schemas/PublicApiErrorResponse' description: Rate limit or quota exceeded. BadRequest: content: application/json: schema: $ref: '#/components/schemas/LegacyErrorResponse' description: Bad request. NotFound: content: application/json: schema: $ref: '#/components/schemas/LegacyErrorResponse' description: Not found. InternalError: content: application/json: schema: $ref: '#/components/schemas/LegacyErrorResponse' description: Internal server error. Conflict: content: application/json: schema: $ref: '#/components/schemas/LegacyErrorResponse' description: Conflict. schemas: LegacyErrorResponse: additionalProperties: false description: Current compatibility error envelope used by legacy /api/v1 routes. properties: error: description: Error message. type: string error_code: description: Optional machine-readable error code. type: string nullable: true missing_scopes: description: Missing scopes. items: description: Scope. type: string type: array required: - error type: object PublicApiErrorResponse: additionalProperties: false description: Target public API error envelope. properties: error: additionalProperties: false description: Error details. properties: code: description: Machine-readable error code. type: string message: description: Human-readable error message. type: string request_id: description: Request identifier. type: string nullable: true required: - code - message type: object required: - error type: object MemberResult: additionalProperties: false description: Workspace member result visible to the authenticated API key. The v1 schema name is a compatibility spelling for this resource. properties: display_name: description: Display name. type: string nullable: true email: description: Email address. type: string format: email nullable: true id: description: Workspace member identifier. type: string example: 01jzn7e61x3a7v9h2r7t2m3q4p profile_image_url: description: Profile image URL. type: string format: uri nullable: true title: description: Workspace member title. type: string nullable: true workspaceMembershipId: description: Canonical workspace membership identifier. Matches legacy id during the compatibility window. type: string example: 01jzn7e61x3a7v9h2r7t2m3q4p required: - id - workspaceMembershipId - display_name - email - title - profile_image_url type: object securitySchemes: AndoApiKey: description: Workspace API key. Current accepted keys use the ando_sk_ prefix. in: header name: x-api-key type: apiKey BearerApiKey: bearerFormat: ando_sk description: Compatibility transport for workspace API keys. scheme: bearer type: http