Skip to content

נתוני עזר

טבלאות עזר סטטיות/מנויות שה-API חושף לצורך בניית ממשקי משתמש ואימות קלט. נקודות קצה אלה אינן תחומות-רישיון — הן מחזירות את אותם נתונים לכל לקוח מאומת ואינן קוראות את license_key. אימות: client credentials.


GET /reference/shipping-statuses

מחזיר את רשימת שמות סטטוסי המשלוח המוכרים ל-ShipOS. אימות: client credentials. רישיון: לא רלוונטי.

הערכים מגיעים מטבלת shipping_status (מונחי-נתונים), ומוחזרים כמערך שטוח של מחרוזות שם סטטוס בסדר אלפביתי. מסנן search אופציונלי מצמצם את הרשימה לשמות המכילים את תת-המחרוזת הנתונה.

פרמטרים

שאילתה

שדהסוגחובהתיאור
searchstringלאמסנן LIKE %…% שאינו תלוי רישיות על שם הסטטוס. בהיעדרו, כל הסטטוסים מוחזרים.

בקשה לדוגמה

bash
curl --location 'https://app.shipos.co.il/api/v2/reference/shipping-statuses?search=deliver' \
--header 'X-Client-Id: {client_id}' \
--header 'X-Client-Secret: {client_secret}' \
--header 'Accept: application/json'
js
// Node.js 18+ / דפדפנים — בלי תלויות
const query = new URLSearchParams({ search: 'deliver' })

const response = await fetch(
  `https://app.shipos.co.il/api/v2/reference/shipping-statuses?${query}`,
  {
    headers: {
      'X-Client-Id': process.env.SHIPOS_CLIENT_ID,
      'X-Client-Secret': process.env.SHIPOS_CLIENT_SECRET,
      Accept: 'application/json',
    },
  },
)

if (!response.ok) {
  const { error } = await response.json()
  throw new Error(`${error.code}: ${error.message}`)
}

const { data: statuses } = await response.json()

console.log(statuses.join(', '))
php
<?php
// composer require guzzlehttp/guzzle

$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://app.shipos.co.il/api/v2/',
    'headers' => [
        'X-Client-Id' => getenv('SHIPOS_CLIENT_ID'),
        'X-Client-Secret' => getenv('SHIPOS_CLIENT_SECRET'),
        'Accept' => 'application/json',
    ],
]);

$response = $client->get('reference/shipping-statuses', [
    'query' => ['search' => 'deliver'],
]);
$statuses = json_decode($response->getBody()->getContents(), true)['data'];

echo implode(', ', $statuses), PHP_EOL;
php
<?php

use Illuminate\Support\Facades\Http;

$statuses = Http::withHeaders([
    'X-Client-Id' => config('services.shipos.client_id'),
    'X-Client-Secret' => config('services.shipos.client_secret'),
])
    ->acceptJson()
    ->get('https://app.shipos.co.il/api/v2/reference/shipping-statuses', [
        'search' => 'deliver',
    ])
    ->throw()
    ->json('data');

logger()->info(implode(', ', $statuses));
python
# pip install httpx
import os

import httpx

response = httpx.get(
    "https://app.shipos.co.il/api/v2/reference/shipping-statuses",
    params={"search": "deliver"},
    headers={
        "X-Client-Id": os.environ["SHIPOS_CLIENT_ID"],
        "X-Client-Secret": os.environ["SHIPOS_CLIENT_SECRET"],
        "Accept": "application/json",
    },
)
response.raise_for_status()
statuses = response.json()["data"]

print(", ".join(statuses))
go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"net/url"
	"os"
)

type statusesResponse struct {
	Data []string `json:"data"`
}

func main() {
	query := url.Values{"search": {"deliver"}}
	req, _ := http.NewRequest("GET",
		"https://app.shipos.co.il/api/v2/reference/shipping-statuses?"+query.Encode(),
		nil)
	req.Header.Set("X-Client-Id", os.Getenv("SHIPOS_CLIENT_ID"))
	req.Header.Set("X-Client-Secret", os.Getenv("SHIPOS_CLIENT_SECRET"))
	req.Header.Set("Accept", "application/json")

	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()

	var payload statusesResponse
	if err := json.NewDecoder(res.Body).Decode(&payload); err != nil {
		panic(err)
	}

	for _, status := range payload.Data {
		fmt.Println(status)
	}
}
java
// Java 17+ — java.net.http, בלי תלויות (פרסור עם Jackson/Gson)
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;

public class ShipOsShippingStatuses {
    public static void main(String[] args) throws Exception {
        String query = "search="
            + URLEncoder.encode("deliver", StandardCharsets.UTF_8);

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(
                "https://app.shipos.co.il/api/v2/reference/shipping-statuses?" + query))
            .header("X-Client-Id", System.getenv("SHIPOS_CLIENT_ID"))
            .header("X-Client-Secret", System.getenv("SHIPOS_CLIENT_SECRET"))
            .header("Accept", "application/json")
            .build();

        HttpResponse<String> response = HttpClient.newHttpClient()
            .send(request, HttpResponse.BodyHandlers.ofString());

        if (response.statusCode() != 200) {
            throw new RuntimeException("ShipOS error: " + response.body());
        }

        System.out.println(response.body()); // {"data":["Delivered", ...]}
    }
}
csharp
// .NET 8+ — System.Net.Http.Json
using System.Net.Http.Json;
using System.Text.Json;
using System.Web;

using var http = new HttpClient
{
    BaseAddress = new Uri("https://app.shipos.co.il/api/v2/"),
};
http.DefaultRequestHeaders.Add("X-Client-Id",
    Environment.GetEnvironmentVariable("SHIPOS_CLIENT_ID"));
http.DefaultRequestHeaders.Add("X-Client-Secret",
    Environment.GetEnvironmentVariable("SHIPOS_CLIENT_SECRET"));

var query = HttpUtility.ParseQueryString(string.Empty);
query["search"] = "deliver";

var payload = await http.GetFromJsonAsync<JsonDocument>(
        $"reference/shipping-statuses?{query}")
    ?? throw new InvalidOperationException("Empty response");

foreach (var status in payload.RootElement.GetProperty("data").EnumerateArray())
{
    Console.WriteLine(status.GetString());
}
ruby
require "net/http"
require "json"

uri = URI("https://app.shipos.co.il/api/v2/reference/shipping-statuses")
uri.query = URI.encode_www_form(search: "deliver")

request = Net::HTTP::Get.new(uri)
request["X-Client-Id"] = ENV.fetch("SHIPOS_CLIENT_ID")
request["X-Client-Secret"] = ENV.fetch("SHIPOS_CLIENT_SECRET")
request["Accept"] = "application/json"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end

raise "ShipOS error: #{response.body}" unless response.is_a?(Net::HTTPSuccess)

puts JSON.parse(response.body).fetch("data").join(", ")
rust
// [dependencies]
// reqwest = { version = "0.12", features = ["json"] }
// tokio = { version = "1", features = ["full"] }
// serde_json = "1"
use serde_json::Value;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let payload: Value = reqwest::Client::new()
        .get("https://app.shipos.co.il/api/v2/reference/shipping-statuses")
        .query(&[("search", "deliver")])
        .header("X-Client-Id", std::env::var("SHIPOS_CLIENT_ID")?)
        .header("X-Client-Secret", std::env::var("SHIPOS_CLIENT_SECRET")?)
        .header("Accept", "application/json")
        .send()
        .await?
        .error_for_status()?
        .json()
        .await?;

    if let Some(statuses) = payload["data"].as_array() {
        for status in statuses {
            println!("{}", status);
        }
    }
    Ok(())
}

תגובה 200

data הוא מערך שטוח של מחרוזות שם סטטוס, ממוין לפי שם. (הרשומות המדויקות מונחות-נתונים מטבלת shipping_status.)

json
{
  "data": [
    "Delivered",
    "In transit",
    "Out for delivery",
    "Pending",
    "Returned"
  ]
}

שגיאות

סטטוסקודמתי
401unauthenticatedפרטי הזדהות (client credentials) חסרים או שגויים.

GET /reference/service-types

מחזיר את סוגי שירות המשלוח של v2. אימות: client credentials. רישיון: לא רלוונטי.

אלה סוגי השירות האגנוסטיים לחברת השילוח שבשימוש בכל רחבי v2 API (למשל השדה service_type על משלוחים). לכל רשומה יש value מכונתי ו-label קריא לאדם.

פרמטרים

אין.

בקשה לדוגמה

bash
curl --location 'https://app.shipos.co.il/api/v2/reference/service-types' \
--header 'X-Client-Id: {client_id}' \
--header 'X-Client-Secret: {client_secret}' \
--header 'Accept: application/json'
js
// Node.js 18+ / דפדפנים — בלי תלויות
const response = await fetch(
  'https://app.shipos.co.il/api/v2/reference/service-types',
  {
    headers: {
      'X-Client-Id': process.env.SHIPOS_CLIENT_ID,
      'X-Client-Secret': process.env.SHIPOS_CLIENT_SECRET,
      Accept: 'application/json',
    },
  },
)

if (!response.ok) {
  const { error } = await response.json()
  throw new Error(`${error.code}: ${error.message}`)
}

const { data: serviceTypes } = await response.json()

for (const type of serviceTypes) {
  console.log(type.value, '→', type.label)
}
php
<?php
// composer require guzzlehttp/guzzle

$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://app.shipos.co.il/api/v2/',
    'headers' => [
        'X-Client-Id' => getenv('SHIPOS_CLIENT_ID'),
        'X-Client-Secret' => getenv('SHIPOS_CLIENT_SECRET'),
        'Accept' => 'application/json',
    ],
]);

$serviceTypes = json_decode(
    $client->get('reference/service-types')->getBody()->getContents(),
    true,
)['data'];

foreach ($serviceTypes as $type) {
    echo $type['value'], ' → ', $type['label'], PHP_EOL;
}
php
<?php

use Illuminate\Support\Facades\Http;

$serviceTypes = Http::withHeaders([
    'X-Client-Id' => config('services.shipos.client_id'),
    'X-Client-Secret' => config('services.shipos.client_secret'),
])
    ->acceptJson()
    ->get('https://app.shipos.co.il/api/v2/reference/service-types')
    ->throw()
    ->json('data');

foreach ($serviceTypes as $type) {
    logger()->info($type['value'].' → '.$type['label']);
}
python
# pip install httpx
import os

import httpx

response = httpx.get(
    "https://app.shipos.co.il/api/v2/reference/service-types",
    headers={
        "X-Client-Id": os.environ["SHIPOS_CLIENT_ID"],
        "X-Client-Secret": os.environ["SHIPOS_CLIENT_SECRET"],
        "Accept": "application/json",
    },
)
response.raise_for_status()
service_types = response.json()["data"]

for service_type in service_types:
    print(service_type["value"], "→", service_type["label"])
go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"os"
)

type serviceTypesResponse struct {
	Data []struct {
		Value string `json:"value"`
		Label string `json:"label"`
	} `json:"data"`
}

func main() {
	req, _ := http.NewRequest("GET",
		"https://app.shipos.co.il/api/v2/reference/service-types", nil)
	req.Header.Set("X-Client-Id", os.Getenv("SHIPOS_CLIENT_ID"))
	req.Header.Set("X-Client-Secret", os.Getenv("SHIPOS_CLIENT_SECRET"))
	req.Header.Set("Accept", "application/json")

	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()

	var payload serviceTypesResponse
	if err := json.NewDecoder(res.Body).Decode(&payload); err != nil {
		panic(err)
	}

	for _, serviceType := range payload.Data {
		fmt.Println(serviceType.Value, "→", serviceType.Label)
	}
}
java
// Java 17+ — java.net.http, בלי תלויות (פרסור עם Jackson/Gson)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class ShipOsServiceTypes {
    public static void main(String[] args) throws Exception {
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://app.shipos.co.il/api/v2/reference/service-types"))
            .header("X-Client-Id", System.getenv("SHIPOS_CLIENT_ID"))
            .header("X-Client-Secret", System.getenv("SHIPOS_CLIENT_SECRET"))
            .header("Accept", "application/json")
            .build();

        HttpResponse<String> response = HttpClient.newHttpClient()
            .send(request, HttpResponse.BodyHandlers.ofString());

        if (response.statusCode() != 200) {
            throw new RuntimeException("ShipOS error: " + response.body());
        }

        System.out.println(response.body()); // {"data":[{"value":"home",...}]}
    }
}
csharp
// .NET 8+ — System.Net.Http.Json
using System.Net.Http.Json;
using System.Text.Json;

using var http = new HttpClient
{
    BaseAddress = new Uri("https://app.shipos.co.il/api/v2/"),
};
http.DefaultRequestHeaders.Add("X-Client-Id",
    Environment.GetEnvironmentVariable("SHIPOS_CLIENT_ID"));
http.DefaultRequestHeaders.Add("X-Client-Secret",
    Environment.GetEnvironmentVariable("SHIPOS_CLIENT_SECRET"));

var payload = await http.GetFromJsonAsync<JsonDocument>("reference/service-types")
    ?? throw new InvalidOperationException("Empty response");

foreach (var type in payload.RootElement.GetProperty("data").EnumerateArray())
{
    Console.WriteLine($"{type.GetProperty("value").GetString()} → " +
        $"{type.GetProperty("label").GetString()}");
}
ruby
require "net/http"
require "json"

uri = URI("https://app.shipos.co.il/api/v2/reference/service-types")
request = Net::HTTP::Get.new(uri)
request["X-Client-Id"] = ENV.fetch("SHIPOS_CLIENT_ID")
request["X-Client-Secret"] = ENV.fetch("SHIPOS_CLIENT_SECRET")
request["Accept"] = "application/json"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end

raise "ShipOS error: #{response.body}" unless response.is_a?(Net::HTTPSuccess)

JSON.parse(response.body).fetch("data").each do |type|
  puts "#{type["value"]}#{type["label"]}"
end
rust
// [dependencies]
// reqwest = { version = "0.12", features = ["json"] }
// tokio = { version = "1", features = ["full"] }
// serde_json = "1"
use serde_json::Value;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let payload: Value = reqwest::Client::new()
        .get("https://app.shipos.co.il/api/v2/reference/service-types")
        .header("X-Client-Id", std::env::var("SHIPOS_CLIENT_ID")?)
        .header("X-Client-Secret", std::env::var("SHIPOS_CLIENT_SECRET")?)
        .header("Accept", "application/json")
        .send()
        .await?
        .error_for_status()?
        .json()
        .await?;

    if let Some(types) = payload["data"].as_array() {
        for service_type in types {
            println!("{} → {}", service_type["value"], service_type["label"]);
        }
    }
    Ok(())
}

תגובה 200

json
{
  "data": [
    { "value": "home", "label": "Home delivery" },
    { "value": "pickup", "label": "Pickup point" },
    { "value": "exchange", "label": "Exchange" },
    { "value": "return", "label": "Return" }
  ]
}

סוגי שירות

valuelabel
homeHome delivery (משלוח לבית)
pickupPickup point (נקודת איסוף)
exchangeExchange (החלפה)
returnReturn (החזרה)

שגיאות

סטטוסקודמתי
401unauthenticatedפרטי הזדהות (client credentials) חסרים או שגויים.