1. Lista workspace’ów
Uruchom zapytanie i skopiuj dokładne id z workspaces.nodes. Nie używaj nazwy workspace. Jeśli lista jest pusta, utwórz workspace w portalu i sprawdź dostęp integracji.
query Workspaces($after: String) {
workspaces(first: 20, after: $after) {
nodes { id displayName status }
pageInfo { hasNextPage endCursor }
}
}Zmienne JSON w edytorze Variables:
{}
2. Lista urządzeń w workspace
Zastąp workspaceId identyfikatorem z poprzedniego zapytania. Skopiuj id z workspace.devices.nodes do input.deviceId w mutacji wysyłki, nie nazwę ani numer seryjny telefonu. Jeśli lista jest pusta, sparuj telefon w tym workspace. Wymagany zakres integracji: smspipe/devices.read.
query Devices($workspaceId: ID!, $after: String) {
workspace(id: $workspaceId) {
id
displayName
devices(first: 20, after: $after) {
nodes { id name status }
pageInfo { hasNextPage endCursor }
}
}
}Zmienne JSON w edytorze Variables:
{
"workspaceId": "<workspace-graphql-id>"
}
Gdy pageInfo.hasNextPage jest true, dodaj do zmiennych after z wartością pageInfo.endCursor z tego samego zapytania. Po zmianie workspace wyczyść after.
3. Wyślij SMS
Zastąp input.deviceId identyfikatorem z listy urządzeń, a recipients własnym numerem w formacie E.164. Sprawdź treść przed uruchomieniem. To nie jest sandbox: mutacja wysyła prawdziwy SMS i zużywa kredyty. Wymagany zakres integracji: smspipe/messages.write.
mutation SendSms($input: MessageCreateInput!) {
message_create(input: $input) {
messages { id status }
errors { __typename ... on Error { message } }
}
}Zmienne JSON w edytorze Variables:
{
"input": {
"deviceId": "<device-graphql-id>",
"recipients": [
"+48123123123"
],
"text": "Hello from SMSPort"
}
}
Sprawdź errors oraz messages.id i status. Przyjęcie wiadomości nie oznacza jej dostarczenia. Sprawdź status wiadomości w tym samym workspace; wymagany zakres: smspipe/messages.read.
curl
curl -X POST "https://api.smsport.app/graphql" -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" --data '{"query":"mutation SendSms($input: MessageCreateInput!) {\n message_create(input: $input) {\n messages { id status }\n errors { __typename ... on Error { message } }\n }\n}","variables":{"input":{"deviceId":"<device-graphql-id>","recipients":["+48123123123"],"text":"Hello from SMSPort"}}}'
W żądaniu curl również zastąp deviceId i numer odbiorcy przed wysłaniem.