> ## Documentation Index
> Fetch the complete documentation index at: https://docs.semicola.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Finish Google or Microsoft sign-in



## OpenAPI

````yaml /openapi/v3.yaml post /auth/oauth/callback
openapi: 3.1.0
info:
  title: Semicola Exchange platform API
  version: 3.0.0-preview
  description: >-
    Platform endpoints of Semicola: sign-in, signup and OAuth for MCP clients,
    accounts, members and keys, billing, notifications, the Semi assistant (chat
    stream, confirmations, conversations), the MCP App widget host and realtime
    feeds. Typed agent tools live on the MCP server at /mcp/v3.
servers:
  - url: https://api.semicola.com
security:
  - bearerAuth: []
  - sessionCookie: []
tags:
  - name: Auth
  - name: Signup
  - name: OAuth
  - name: Accounts
  - name: Members
  - name: API Keys
  - name: Connected Apps
  - name: Onboarding
  - name: Billing
  - name: AI Usage
  - name: Notifications
  - name: Assistant
  - name: MCP Apps
  - name: Realtime
  - name: Demo
paths:
  /auth/oauth/callback:
    post:
      tags:
        - Auth
      summary: Finish Google or Microsoft sign-in
      operationId: postAuthOauthCallback
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  minLength: 1
                state:
                  type: string
                  minLength: 1
              required:
                - code
                - state
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    anyOf:
                      - type: object
                        properties:
                          me:
                            anyOf:
                              - type: object
                                properties:
                                  user:
                                    type: object
                                    properties:
                                      id:
                                        type: integer
                                        exclusiveMinimum: 0
                                        maximum: 9007199254740991
                                      email:
                                        type: string
                                        format: email
                                        pattern: >-
                                          ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                                      firstName:
                                        type:
                                          - string
                                          - 'null'
                                      lastName:
                                        type:
                                          - string
                                          - 'null'
                                      isStaff:
                                        type: boolean
                                    required:
                                      - id
                                      - email
                                      - firstName
                                      - lastName
                                      - isStaff
                                    additionalProperties: false
                                  currentCustomerId:
                                    anyOf:
                                      - type: integer
                                        exclusiveMinimum: 0
                                        maximum: 9007199254740991
                                      - type: 'null'
                                  customers:
                                    type: array
                                    items:
                                      type: object
                                      properties:
                                        id:
                                          type: integer
                                          exclusiveMinimum: 0
                                          maximum: 9007199254740991
                                        name:
                                          type: string
                                        company:
                                          type:
                                            - string
                                            - 'null'
                                        kind:
                                          type: string
                                          enum:
                                            - STANDALONE
                                            - PARENT
                                            - CHILD
                                        nodeKind:
                                          type: string
                                          enum:
                                            - ACCOUNT
                                            - CONTAINER
                                        accountType:
                                          anyOf:
                                            - type: string
                                              enum:
                                                - BUYER
                                                - SELLER
                                                - PARTNER
                                            - type: 'null'
                                        role:
                                          type: string
                                          enum:
                                            - SUPER_ADMIN
                                            - ADMIN
                                            - PREMIUM
                                            - BASIC
                                        membershipRole:
                                          type: string
                                          enum:
                                            - MEMBER
                                            - ADMIN
                                        parentId:
                                          anyOf:
                                            - type: integer
                                              exclusiveMinimum: 0
                                              maximum: 9007199254740991
                                            - type: 'null'
                                        buyerAccessPosture:
                                          anyOf:
                                            - type: string
                                              enum:
                                                - SANDBOX_ONLY
                                                - LIVE_ELIGIBLE
                                            - type: 'null'
                                      required:
                                        - id
                                        - name
                                        - company
                                        - kind
                                        - nodeKind
                                        - accountType
                                        - role
                                        - membershipRole
                                        - parentId
                                        - buyerAccessPosture
                                      additionalProperties: false
                                  featureFlags:
                                    type: object
                                    propertyNames:
                                      type: string
                                    additionalProperties:
                                      type: boolean
                                  authProvider:
                                    type: string
                                    enum:
                                      - local
                                      - workos
                                  emailVerified:
                                    type: boolean
                                  locale:
                                    type:
                                      - string
                                      - 'null'
                                  tos:
                                    type: object
                                    properties:
                                      showTosBox:
                                        type: boolean
                                      canAcceptTos:
                                        type: boolean
                                      latestTosVersion:
                                        type:
                                          - string
                                          - 'null'
                                      acceptedVersion:
                                        type:
                                          - string
                                          - 'null'
                                      tosUpdate:
                                        anyOf:
                                          - type: object
                                            properties:
                                              action:
                                                type: string
                                                enum:
                                                  - notice
                                                  - acceptance_due
                                                  - acceptance_required
                                              changeLevel:
                                                type: string
                                                enum:
                                                  - PATCH
                                                  - MINOR
                                                  - MAJOR
                                              version:
                                                type: string
                                              deadline:
                                                anyOf:
                                                  - type: string
                                                    format: date-time
                                                    pattern: >-
                                                      ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                                                  - type: 'null'
                                            required:
                                              - action
                                              - changeLevel
                                              - version
                                              - deadline
                                            additionalProperties: false
                                          - type: 'null'
                                    required:
                                      - showTosBox
                                      - canAcceptTos
                                      - latestTosVersion
                                      - acceptedVersion
                                      - tosUpdate
                                    additionalProperties: false
                                required:
                                  - user
                                  - currentCustomerId
                                  - customers
                                  - featureFlags
                                  - authProvider
                                additionalProperties: false
                              - type: 'null'
                          requiresSignup:
                            type: boolean
                        required:
                          - me
                          - requiresSignup
                        additionalProperties: false
                      - type: 'null'
                  error:
                    anyOf:
                      - type: object
                        properties:
                          code:
                            type: string
                          message:
                            type: string
                          field:
                            type: string
                          details: {}
                        required:
                          - code
                          - message
                        additionalProperties: false
                      - type: 'null'
                required:
                  - data
                  - error
                additionalProperties: false
        default:
          description: >-
            Error envelope `{data: null, error: {code, message, field?,
            details?}}`.
      security: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or OAuth access token.
    sessionCookie:
      type: apiKey
      in: cookie
      name: sc_session

````