Teya Stores API

The Stores API from Teya — 3 operation(s) for stores.

Operations 3

PUT /poslink/v1/stores/{store_id}/configs/{config_key} Set a terminal configuration for a store #
GET /poslink/v1/stores Retrieve a list of stores #
GET /poslink/v1/stores/{store_id}/terminals/{terminal_id}/configs Retrieve configurations for a terminal scoped to a store #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/teya-stores-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

teya-stores-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: POSLink Stores API
  description: Handles messaging between the ePOS software and terminal.
  contact:
    name: Poslink Service
    url: https://teyaglobal.atlassian.net/wiki/spaces/CE/pages/5993563200/Integration+Guide
    email: poslink@teya.com
  version: '1.2'
servers:
- url: https://api.teya.com
  description: Production Server
- url: https://api.teya.xyz
  description: Staging Server
security:
- authorisation: []
tags:
- name: Stores
paths:
  /poslink/v1/stores/{store_id}/configs/{config_key}:
    put:
      tags:
      - Stores
      summary: Set a terminal configuration for a store
      description: Sets a configuration value for the store. The value applies to all terminals in the store. Valid values depend on the config_key - for example, PAT_ENABLED accepts true or false; other values return 400. Calling this endpoint again with the same value has no additional effect.
      operationId: updateTerminalConfig
      parameters:
      - name: store_id
        in: path
        description: The store the configuration applies to
        required: true
        schema:
          type: string
          format: uuid
        example: f04fe1ce-e7bd-4c5b-b873-b156643c0bc3
      - name: config_key
        in: path
        description: The configuration key to set
        required: true
        schema:
          type: string
        example: PAT_ENABLED
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTerminalConfigRequest'
        required: true
      responses:
        '200':
          description: Configuration updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TerminalConfigItem'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: BAD_REQUEST
                description: Bad Request
        '401':
          description: Lacks valid authentication credentials for the requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: UNAUTHORIZED
                description: Unauthorized
        '403':
          description: The server understands the request but refuses to authorize it
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: FORBIDDEN
                description: Forbidden
        '408':
          description: Request timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: REQUEST_TIMEOUT
                description: Request timeout
        '429':
          description: Too many requests in a given amount of time
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: TOO_MANY_REQUESTS
                description: Too Many Requests
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: INTERNAL_SERVER_ERROR
                description: Internal Server Error
      x-kong-plugin-rate-limiting-pre-auth:
        config:
          second: 2
          policy: redis
          limit_by: ip
  /poslink/v1/stores:
    get:
      tags:
      - Stores
      summary: Retrieve a list of stores
      description: '### No Permission Required - This is an endpoint that does not require permission

        ---


        Retrieves all stores for a given merchant.


        **Required Scopes (one of the following):**


        - `stores/id/terminals` (returned via the register API: `POST /poslink/v1/epos/register`)

        - `default_access` (deprecated, will be removed in the future; included for backward compatibility with existing integrations)'
      operationId: getStores
      responses:
        '200':
          description: Stores data successfully retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RetrieveStoreResponse'
              examples:
                Main_Store:
                  description: Main_Store
                  value:
                    stores:
                    - id: f04fe1ce-e7bd-4c5b-b873-b156643c0bc3
                      name: Mari Sucos - Main Store
                      address:
                        city: Porto
                        country: PT
                        street_address_line_1: Rua da boavista 531
                        street_address_line_2: Towns
                        zipcode: 4050-104
                    - id: 34a735b9-58a6-4622-af5f-054e6d87e22d
                      name: Mari Sucos - Fast Express
                      address:
                        city: Lisboa
                        country: PT
                        street_address_line_1: Avenida dos almirantes 112
                        street_address_line_2: ''
                        zipcode: 4098-104
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: BAD_REQUEST
                description: Bad Request
        '401':
          description: Lacks valid authentication credentials for the requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: UNAUTHORIZED
                description: Unauthorized
        '403':
          description: The server understands the request but refuses to authorize it
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: FORBIDDEN
                description: Forbidden
        '408':
          description: Request timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: REQUEST_TIMEOUT
                description: Request timeout
        '429':
          description: Too many requests in a given amount of time
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: TOO_MANY_REQUESTS
                description: Too Many Requests
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: INTERNAL_SERVER_ERROR
                description: Internal Server Error
      x-permission-set:
        no-permission: true
        description: This is an endpoint that does not require permission
      x-kong-plugin-scope-authorisation:
        config:
          required_scopes:
          - stores/id/terminals
          - default_access
        enabled: true
  /poslink/v1/stores/{store_id}/terminals/{terminal_id}/configs:
    get:
      tags:
      - Stores
      summary: Retrieve configurations for a terminal scoped to a store
      description: Returns all configurations for the store. The terminal_id is recorded so future configuration updates can be pushed to this terminal.
      operationId: getTerminalConfigs
      parameters:
      - name: store_id
        in: path
        description: The store the terminal belongs to
        required: true
        schema:
          type: string
          format: uuid
        example: f04fe1ce-e7bd-4c5b-b873-b156643c0bc3
      - name: terminal_id
        in: path
        description: The terminal whose configurations are being fetched
        required: true
        schema:
          type: string
        example: term-001
      responses:
        '200':
          description: Configurations retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TerminalConfigsResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: BAD_REQUEST
                description: Bad Request
        '401':
          description: Lacks valid authentication credentials for the requested resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: UNAUTHORIZED
                description: Unauthorized
        '403':
          description: The server understands the request but refuses to authorize it
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: FORBIDDEN
                description: Forbidden
        '408':
          description: Request timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: REQUEST_TIMEOUT
                description: Request timeout
        '429':
          description: Too many requests in a given amount of time
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: TOO_MANY_REQUESTS
                description: Too Many Requests
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
              example:
                code: INTERNAL_SERVER_ERROR
                description: Internal Server Error
components:
  schemas:
    ExceptionResponse:
      type: object
      example:
        code: BAD_REQUEST
        description: Bad Request
      properties:
        code:
          type: string
          format: enum
          description: Error code
          example: BAD_REQUEST
        description:
          type: string
          description: Error description
          example: Bad Request
        invalid_params:
          type: array
          description: List of invalid request parameters. Populated for validation failures (400 / 422); omitted otherwise.
          items:
            $ref: '#/components/schemas/InvalidParams'
      title: ExceptionResponse
    RetrieveStoreResponse:
      type: object
      example:
        stores:
        - id: f04fe1ce-e7bd-4c5b-b873-b156643c0bc3
          name: Mari Sucos - Main Store
          address:
            city: Porto
            country: PT
            street_address_line_1: Rua da boavista 531
            street_address_line_2: Towns
            zipcode: 4050-104
        - id: 34a735b9-58a6-4622-af5f-054e6d87e22d
          name: Mari Sucos - Fast Express
          address:
            city: Lisboa
            country: PT
            street_address_line_1: Avenida dos almirantes 112
            street_address_line_2: ''
            zipcode: 4098-104
      properties:
        stores:
          type: array
          items:
            $ref: '#/components/schemas/Store'
      title: RetrieveStoreResponse
    Store:
      type: object
      example:
        id: f04fe1ce-e7bd-4c5b-b873-b156643c0bc3
        name: Mari Sucos - Main Store
        address:
          city: Porto
          country: PT
          street_address_line_1: Rua da boavista 531
          street_address_line_2: Towns
          zipcode: 4050-104
      properties:
        id:
          type: string
          description: The store identifier
          example: f04fe1ce-e7bd-4c5b-b873-b156643c0bc3
        name:
          type: string
          description: The name of the store
          example: Mari Sucos - Main Store
        address:
          $ref: '#/components/schemas/Address'
          description: The address of the store
        company_id:
          type: string
          description: The company identifier
          example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
          writeOnly: true
      title: Store
    TerminalConfigItem:
      type: object
      properties:
        config_key:
          type: string
          description: The configuration key
          example: PAT_ENABLED
          title: Configuration Key
        value:
          type: string
          description: The configuration value
          example: 'true'
          title: Configuration Value
        updated_at:
          type: string
          format: date-time
          description: Timestamp of the last update to this entry, in ISO 8601 format
          example: '2026-05-20T10:00:00Z'
          title: Updated At
      title: Configuration Item
    Address:
      type: object
      example:
        address:
          city: Porto
          country: PT
          street_address_line_1: Rua da boavista 531
          street_address_line_2: Towns
          zipcode: 4050-104
      properties:
        city:
          type: string
          description: Name of the city where the store is located
          example: Porto
        country:
          type: string
          format: ISO 3166
          description: Name of the country where the store is located. Must be a valid ISO 3166 code.
          example: PT
        street_address_line_1:
          type: string
          description: Street address of the store
          example: Rua da boavista 531
        street_address_line_2:
          type: string
          description: Street address of the store
          example: Towns
        zipcode:
          type: string
          description: Zip code of the store
          example: 4050-104
      title: Address
    UpdateTerminalConfigRequest:
      type: object
      properties:
        value:
          type: string
          description: The value for the given configuration key. Accepted values depend on the key. For example, PAT_ENABLED accepts true or false; any other value results in a 400 response.
          example: 'true'
          title: Configuration Value
      title: Update Configuration Request
    TerminalConfigsResponse:
      type: object
      properties:
        configs:
          type: array
          description: Configurations applicable to the terminal
          items:
            $ref: '#/components/schemas/TerminalConfigItem'
          title: Configurations
      title: Configuration Response
    InvalidParams:
      type: object
      description: A single failed parameter from a 4xx validation response.
      example:
        path: requested_amount.amount
        reason: Amount exceeds the tab's remaining balance
      properties:
        path:
          type: string
          description: Dot-notation path to the offending field on the request body, in snake_case.
          example: requested_amount.amount
        reason:
          type: string
          description: Human-readable explanation of why the parameter was rejected.
          example: Amount exceeds the tab's remaining balance
      required:
      - path
      - reason
      title: InvalidParams
  securitySchemes:
    authorisation:
      type: oauth2
      description: 'Given a valid access token, you can now use a Bearer Token to authenticate your requests.

        To do so you have to preface your access token with Bearer and send it in the HTTP Authorization header.

        It should look something like this: `Authorization: Bearer <ACCESS_TOKEN>`

        '
      flows:
        authorizationCode:
          authorizationUrl: https://id.teya.com/oauth/v2/oauth-authorize
          tokenUrl: https://id.teya.com/oauth/v2/oauth-token
          scopes: {}
x-teya-variables:
  production:
    rps-payment-request: 15
  rps-payment-request: '1'
  staging:
    rps-payment-request: 15