openapi: 3.0.1 info: title: IO.Common Accounts Services API version: '1.0' security: - OAuth2: [] tags: - name: Services paths: /v1/Services: get: tags: - Services summary: "Services the current tenant currently subscribes to. Each returned service\r\ncarries only the tenant's own active subscriptions on its\r\n`Subscriptions` navigation. This is the list to populate\r\npickers like the new-location services dropdown." operationId: Services list parameters: - name: Account in: query description: Account schema: title: Account type: int responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Service' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: Unauthorized '403': description: Forbidden security: - OAuth2: - io.common /v1/Services/available: get: tags: - Services summary: "Full system catalog of services. Each service includes the current\r\ntenant's own active subscriptions (filtered `Subscriptions` navigation),\r\nso a subscribe-to-service UI can render every catalog entry plus a\r\n\"subscribed?\" indicator in one round-trip." operationId: Available services list parameters: - name: Account in: query description: Account schema: title: Account type: int responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/Service' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '401': description: Unauthorized '403': description: Forbidden security: - OAuth2: - io.common components: schemas: Service: type: object properties: id: type: string format: uuid code: type: string nullable: true name: type: string nullable: true subscriptions: type: array items: $ref: '#/components/schemas/Subscription' nullable: true additionalProperties: false ProblemDetails: type: object properties: type: type: string nullable: true title: type: string nullable: true status: type: integer format: int32 nullable: true detail: type: string nullable: true instance: type: string nullable: true additionalProperties: {} Subscription: type: object properties: id: type: string format: uuid readOnly: true domainEvents: type: array items: $ref: '#/components/schemas/IDomainEvent' nullable: true readOnly: true createdOn: type: string format: date-time nullable: true readOnly: true modifiedOn: type: string format: date-time nullable: true readOnly: true tenantId: type: string format: uuid serviceId: type: string format: uuid startDate: type: string format: date-time nullable: true endDate: type: string format: date-time nullable: true ended: type: boolean service: $ref: '#/components/schemas/Service' additionalProperties: false IDomainEvent: type: object properties: id: type: string format: uuid readOnly: true occurredOn: type: string format: date-time readOnly: true additionalProperties: false securitySchemes: OAuth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://identity.scanbro.com/connect/authorize tokenUrl: https://identity.scanbro.com/connect/token scopes: io.common: default scope