{
    "openapi": "3.0.3",
    "info": {
        "title": "GuwinUS Identity API",
        "version": "1.0.0",
        "description": "Identity, organizations, application profiles, OAuth applications, and privacy-aware ID scanning."
    },
    "servers": [
        {
            "url": "https://identity.guwin.us"
        }
    ],
    "components": {
        "securitySchemes": {
            "ApiKeyBearer": {
                "type": "http",
                "scheme": "bearer",
                "bearerFormat": "gwk_ API key"
            }
        }
    },
    "security": [
        {
            "ApiKeyBearer": []
        }
    ],
    "paths": {
        "/api/v1": {
            "get": {
                "summary": "API status and discovery"
            }
        },
        "/api/v1/me": {
            "get": {
                "summary": "Current API-key owner",
                "x-guwinus-scope": "profile.read"
            }
        },
        "/api/v1/organizations": {
            "get": {
                "summary": "List organizations",
                "x-guwinus-scope": "organizations.read"
            },
            "post": {
                "summary": "Create organization",
                "x-guwinus-scope": "organizations.write"
            }
        },
        "/api/v1/organizations/{id}": {
            "get": {
                "summary": "Get organization",
                "x-guwinus-scope": "organizations.read"
            },
            "patch": {
                "summary": "Update organization",
                "x-guwinus-scope": "organizations.write"
            }
        },
        "/api/v1/organizations/{id}/members": {
            "get": {
                "summary": "List members",
                "x-guwinus-scope": "organizations.read"
            },
            "post": {
                "summary": "Add existing GuwinUS user",
                "x-guwinus-scope": "organizations.write"
            }
        },
        "/api/v1/organizations/{id}/domains": {
            "get": {
                "summary": "List domains",
                "x-guwinus-scope": "organizations.read"
            },
            "post": {
                "summary": "Add domain and receive DNS TXT challenge",
                "x-guwinus-scope": "organizations.write"
            }
        },
        "/api/v1/users": {
            "get": {
                "summary": "List users",
                "x-guwinus-scope": "users.read"
            }
        },
        "/api/v1/users/{id}/profiles/{appKey}": {
            "get": {
                "summary": "Read application profile",
                "x-guwinus-scope": "profiles.read"
            },
            "put": {
                "summary": "Write application profile",
                "x-guwinus-scope": "profiles.write"
            }
        },
        "/api/v1/applications": {
            "get": {
                "summary": "List OAuth applications",
                "x-guwinus-scope": "applications.read"
            },
            "post": {
                "summary": "Create OAuth application",
                "x-guwinus-scope": "applications.write"
            }
        },
        "/api/v1/id-card/resolve": {
            "post": {
                "summary": "Resolve an opaque GuwinUS ID card subject to sharing preferences",
                "x-guwinus-scope": "idcard.scan"
            }
        }
    }
}