openapi: 3.0.3
info:
    title: profiles
    description: The Profiles service stores basic info like names and details for all users, organizations, and service accounts. It’s where you go to look up account info, and it’s kept separate from the Auth Service so it can handle a lot of traffic without slowing things down.
    version: 1.0.0
servers:
    - url: https://profiles.platform.arb.inc
paths:
    /:
        get:
            summary: Get basic service information
            description: Returns a plain text welcome message with the service name and creation date.
            operationId: getRoot
            responses:
                '200':
                    description: Successfully retrieved welcome message.
                    content:
                        text/plain:
                            schema:
                                type: string
                                example: Welcome to the profiles service. Created on July 30, 2025 by Al Beebe
            tags:
                - /
    /internal/user-profiles:
        post:
            summary: Get full profiles for many users
            description: Sends a bunch of user IDs and gets full profile info back.
            operationId: postInternalUserProfiles
            security:
                - bearerAuth: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            type: object
                            required:
                                - userIDs
                            properties:
                                userIDs:
                                    type: array
                                    description: List of user IDs to look up.
                                    items:
                                        type: string
                                        example: "4b2f9d1e-8a4e-4c2a-bc83-3a1ef6a9c012"
                                    example:
                                        - "4b2f9d1e-8a4e-4c2a-bc83-3a1ef6a9c012"
                                        - "9c7a6b55-2b30-49d5-9d2d-7f0d2e1a5f90"
            responses:
                '200':
                    description: Profiles successfully returned.
                    content:
                        application/json:
                            schema:
                                type: object
                                properties:
                                    profiles:
                                        type: array
                                        description: Full profile info for the requested users.
                                        items:
                                            type: object
                                            properties:
                                                id:
                                                    type: string
                                                    description: The unique user ID.
                                                    example: "4b2f9d1e-8a4e-4c2a-bc83-3a1ef6a9c012"
                                                firstName:
                                                    type: string
                                                    description: The user's first name.
                                                    example: "Ava"
                                                lastName:
                                                    type: string
                                                    nullable: true
                                                    description: The user's last name, if available.
                                                    example: "Nguyen"
                                example:
                                    profiles:
                                        - id: "4b2f9d1e-8a4e-4c2a-bc83-3a1ef6a9c012"
                                          firstName: "Ava"
                                          lastName: "Nguyen"
                                        - id: "9c7a6b55-2b30-49d5-9d2d-7f0d2e1a5f90"
                                          firstName: "Liam"
                                          lastName: null
            tags:
                - internal
    /organizations/public-profiles:
        post:
            summary: Retrieve public profiles for a list of organization IDs
            description: Returns public profile information for the provided list of organization IDs. Supports up to 1000 organization IDs per request.
            operationId: getPublicOrganizationProfiles
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            type: object
                            required:
                                - organizationIDs
                            properties:
                                organizationIDs:
                                    type: array
                                    description: A list of organization IDs to fetch public profiles for.
                                    maxItems: 1000
                                    items:
                                        type: string
                                        example: "29029b8a-7d04-4b6f-b85e-9e42bb36ea31"
                                    example:
                                        - "29029b8a-7d04-4b6f-b85e-9e42bb36ea31"
                                        - "45d1dc6d-2737-4086-a6d0-406ba73c7399"
            responses:
                '200':
                    description: Successfully retrieved public profiles.
                    content:
                        application/json:
                            schema:
                                type: object
                                properties:
                                    profiles:
                                        type: array
                                        items:
                                            type: object
                                            properties:
                                                id:
                                                    type: string
                                                    description: The ID of the organization.
                                                    example: "29029b8a-7d04-4b6f-b85e-9e42bb36ea31"
                                                name:
                                                    type: string
                                                    description: The name of the organization.
                                                    example: "Acme Corp"
            tags:
                - organizations
    /users/public-profiles:
        post:
            summary: Retrieve public profiles for a list of user IDs
            description: Returns public profile information for the provided list of user IDs. Supports up to 1000 user IDs per request.
            operationId: getPublicProfiles
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            type: object
                            required:
                                - userIDs
                            properties:
                                userIDs:
                                    type: array
                                    description: A list of user IDs to retrieve public profiles for.
                                    items:
                                        type: string
                                        example: "00c573fd-18d9-4fbe-921e-6926d2c4869e"
                                    example: ["00c573fd-18d9-4fbe-921e-6926d2c4869e", "860490d5-a462-4988-a05c-86586aa2f95a"]
            responses:
                '200':
                    description: Successfully retrieved public profiles.
                    content:
                        application/json:
                            schema:
                                type: object
                                properties:
                                    profiles:
                                        type: array
                                        description: List of user public profiles.
                                        items:
                                            type: object
                                            properties:
                                                id:
                                                    type: string
                                                    description: The user ID.
                                                    example: "00c573fd-18d9-4fbe-921e-6926d2c4869e"
                                                first_name:
                                                    type: string
                                                    description: First name of the user.
                                                    example: "Alice"
                                                last_name:
                                                    type: string
                                                    nullable: true
                                                    description: Last name of the user, if available.
                                                    example: "Smith"
            tags:
                - users
components:
    securitySchemes:
        bearerAuth:
            type: http
            description: access token
            scheme: bearer
            bearerFormat: JWT
tags:
    - name: /
    - name: internal
    - name: organizations
    - name: users
